我要检查
def first_page_error:
-如果该元素不存在,则“断开”并继续执行脚本
-如果元素存在,则刷新页面
-如果刷新运行firstPage()后元素不再存在
我将感谢我正在学习python的所有帮助:)
我现在的代码
def first_page_error():
cap_error = driver.find_element_by_xpath('//*[@id="js-register-with-email"]/div[2]')
while True:
try:
cap_error
except NoSuchElementException:
break
else:
time.sleep(5)
driver.refresh()
def firstPage():
element = driver.find_element_by_xpath('//*[@id="sign-up-link"]')
driver.execute_script("arguments[0].click();", element)
emailInput = driver.find_element_by_xpath('//*[@id="register-email"]')
emailInput.send_keys(emails[0])
condInput = driver.find_element_by_xpath('//*[@id="register-terms"]')
condInput.click()
firstPage()
first_page_error()
答案 0 :(得分:2)
一些反馈点...
如果要自动执行用户方案,请避免使用JS单击。用户无法单击不可见的元素,被遮盖的元素或不在屏幕上的元素等。Selenium旨在像用户一样操作,并在用户无法单击元素时引发错误。这是好事。它可以帮助您发现问题并像用户一样解决它们。
首选ID和CSS选择器。它们更快,得到更好的支持,等等。如果您需要更多说明,网络上有很多信息。我将按ID定位的XPath转换为* _by_id()。
使用driver.find_elements _ *(注意复数,元素S)检查是否存在,并检查集合的len
我会写类似下面的内容。
def first_page_error():
return len(driver.find_elements_by_xpath('//*[@id="js-register-with-email"]/div[2]')) > 0
def firstPage():
driver.find_element_by_id('sign-up-link').click()
driver.find_element_by_id('register-email').send_keys(emails[0])
driver.find_element_by_id('register-terms').click()
firstPage()
if first_page_error():
driver.refresh()
if first_page_error():
firstPage()
# move on with the script