使用Xpath定位不到元素
来源:3-2 最普通的自动化“裸奔状态”

qq_慕盖茨2229007
2022-07-20
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
# 启动浏览器
driver = webdriver.Chrome('D:\web\chromedriver.exe')
#启动网站
driver.get('http://127.0.0.1/zentao/user-login.html')
# 登录
driver.find_element(By.ID, 'account').send_keys('admin')
driver.find_element(By.NAME, 'password').send_keys('123456')
driver.find_element(By.ID, 'submit').click()
# 登录断言
sleep(1)
if driver.find_element(By.XPATH, '//div[@class="user-profile-name"]').text == 'admin':
print('pass')
else:
print('fail')
新版本禅道定位位置
user-profile-name元素定位
提示错误:
DeprecationWarning: executable_path has been deprecated, please pass in a Service object
driver = webdriver.Chrome('D:\web\chromedriver.exe')
Traceback (most recent call last):
File "C:\Users\小跟班\PycharmProjects\pythonProject\nodeone.py", line 26, in <module>
if driver.find_element(By.XPATH,'//span[@class="user-name"]').text == 'admin':
File "D:\Project\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 857, in find_element
return self.execute(Command.FIND_ELEMENT, {
File "D:\Project\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 435, in execute
self.error_handler.check_response(response)
File "D:\Project\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 247, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//span[@class="user-name"]"}
(Session info: chrome=103.0.5060.114)
Stacktrace:
Backtrace:
Ordinal0 [0x00FD6463+2188387]
Ordinal0 [0x00F6E461+1762401]
Ordinal0 [0x00E83D78+802168]
Ordinal0 [0x00EB1880+989312]
Ordinal0 [0x00EB1B1B+989979]
Ordinal0 [0x00EDE912+1173778]
Ordinal0 [0x00ECC824+1099812]
Ordinal0 [0x00EDCC22+1166370]
Ordinal0 [0x00ECC5F6+1099254]
Ordinal0 [0x00EA6BE0+945120]
Ordinal0 [0x00EA7AD6+948950]
GetHandleVerifier [0x012771F2+2712546]
GetHandleVerifier [0x0126886D+2652765]
GetHandleVerifier [0x0106002A+520730]
GetHandleVerifier [0x0105EE06+516086]
Ordinal0 [0x00F7468B+1787531]
Ordinal0 [0x00F78E88+1805960]
Ordinal0 [0x00F78F75+1806197]
Ordinal0 [0x00F81DF1+1842673]
BaseThreadInitThunk [0x75FCFA29+25]
RtlGetAppContainerNamedObjectPath [0x777E7A9E+286]
RtlGetAppContainerNamedObjectPath [0x777E7A6E+238]
经过今天的研究发现在user-profile-name元素定位嵌套在iframe标签里修改代码之后还是有问题,获取的text为空,但是已检查Xpath路径是没有问题的
sleep(5)
framm=driver.find_element(By.XPATH,'/html/body/div[2]/div[2]/iframe')
driver.switch_to.frame(framm)
#切换ifrme
#driver.switch_to.frame('appIframe-program')
sleep(15)
if driver.find_element(By.XPATH, '//div[@class="user-profile-name"]').text == 'admin':
print('pass')
else:
print('fail')
while 1:
start = time.perf_counter()
try:
driver.switch_to.frame('appIframe-my')
driver.find_element(By.XPATH, '//div[@class="user-profile-name"]').click()
print ('已定位到元素')
end=time.perf_counter()
break
except:
print ("还未定位到元素!")
break
pycharm 运行结果
fail
还未获取到元素
写回答
2回答
-
慕丝8522637
2022-08-19
鼠标悬停能解决,可是还是太麻烦,不知道安老版本会不会简单些00 -
qq_慕盖茨2229007
提问者
2022-07-23
已解决此问题
012022-12-10
相似问题