【发布时间】:2017-12-11 12:57:21
【问题描述】:
我编写了一个脚本,它使用Selenium Webdriver(Python 绑定)发送电子邮件。但有时,当我运行该脚本时,元素的 ID 会更改。
错误追溯:
self.error_handler.check_response(response)
File "/usr/local/lib/python2.7/dist-packages/selenium-3.4.3-
py2.7.egg/selenium/webdriver/remote/errorhandler.py", line 194, in
check_response
raise exception_class(message, screen, stacktrace)
elenium.common.exceptions.NoSuchElementException: Message: no such
element: Unable to locate element: {"method":"id","selector":":pm"}
有时,如果我使用有效的 XPath 或 CSS Selector,则会显示相同的错误。
任何人都可以建议使脚本正常工作的最佳方法吗?还有,为什么每次元素的Id都会改变?
我的代码:
from selenium import webdriver
import time
from time import sleep
driver = webdriver.Chrome()
driver.get("https://accounts.google.com")
driver.implicitly_wait(30)
usr = driver.find_element_by_id("identifierId").clear()
usr.send_keys("id@anymail.com")
nextb = driver.find_element_by_id("identifierNext")
nextb.click()
pwd = driver.find_element_by_xpath('//*[@id="password"]/div[1]/div/div[1]/input')
pwd.send_keys("**Enter your password**")
nextpwd = driver.find_element_by_xpath('//*[@id="passwordNext"]/content/span')
nextpwd.click()
driver.implicitly_wait(30)
driver.find_element_by_xpath("//*[@id=':hs']/div/div").click()
time.sleep(3)
to = driver.find_element_by_id(":nf")
to.send_keys("XYZ@gmail.com")
sub = driver.find_element_by_id(":my")
sub.send_keys("with attachment")
descp = driver.find_element_by_id(":nx")
descp.send_keys(" Hi! this second one.")
driver.find_element_by_id(":om").click() #attachmment
driver.find_element_by_css_selector("input[type=\"file\"]").send_keys("/home/example.png")
#sead the mail
driver.find_element_by_id(":mo").click()
【问题讨论】:
-
建议始终分享您正在使用的页面的代码和html,以便有人可以帮助您
-
没错,请分享您的代码和页面的html。可以使用其他定位器属性以及使用 xpath 函数轻松捕获动态 id。因此,如果您可以共享页面的 html,那就太好了。谢谢!
-
Shivangi,我建议您单击 edit 并添加包含您要查找的元素的
HTML部分。也添加脚本代码。否则,你会得到糟糕的、模糊的答案。 -
谢谢大家的建议
标签: python css selenium xpath selenium-webdriver