元素有时找不到[Selenium,Python]
我正在使用Selenium自动化一个过程,并使用ChroPath查找XPath之类的元素,以便于使用。但有时元素不可用;例如: 这是我为验证码部分编写的代码行,我实际上使用了Anti-Captcha.com扩展,我想找到反验证码在解决验证码时给出的文本。看起来是这样的: 另外,我正在尝试的网站是ProtonMail,在这个页面上,你可以验证自己是否是人类 我已经编写了使用电子邮件验证自己的部分,但我希望Captcha作为主要用途,电子邮件验证作为反手,以防Captcha出现问题 我试着寻找元素的位置,但我能找到的唯一东西是用图像搜索器? 我被迫在大多数情况下使用带有绝对方向的PyAutoGui来处理一些元素,比如按钮单击或某些字段中带有绝对方向的单击,因为我无法正确地找到XPath 我想知道体验用户定位元素的一些方法 更新: 这是我试图修复代码并尝试不同方法但仍然不起作用的另一次尝试元素有时找不到[Selenium,Python],python,selenium,selenium-webdriver,xpath,element,Python,Selenium,Selenium Webdriver,Xpath,Element,我正在使用Selenium自动化一个过程,并使用ChroPath查找XPath之类的元素,以便于使用。但有时元素不可用;例如: 这是我为验证码部分编写的代码行,我实际上使用了Anti-Captcha.com扩展,我想找到反验证码在解决验证码时给出的文本。看起来是这样的: 另外,我正在尝试的网站是ProtonMail,在这个页面上,你可以验证自己是否是人类 我已经编写了使用电子邮件验证自己的部分,但我希望Captcha作为主要用途,电子邮件验证作为反手,以防Captcha出现问题 我试着寻找元
try:
P_Captcha_ButtonWait = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//a[@class='status'][contains(.,'Solving is in process...')]")))
if P_Captcha_ButtonWait is True:
print("Captcha is being solved. Waiting 40 seconds...")
time.sleep(40)
CaptchaSolved = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, "//div[@class='antigate_solver recaptcha solved'][contains(.,'Solved')]")))
if CaptchaSolved is True:
time.sleep(3)
print("It's rocking!!!!")
driver.find_element_by_xpath(
"/html[1]/body[1]/div[2]/div[1]/div[1]/div[1]/form[1]/div[1]/div[1]/p[3]/button[1]").click()
except TimeoutException:
# P_Email_Verification = WebDriverWait(driver, 10).until(EC.presence_of_element_located((
# By.XPATH, "/html[1]/body[1]/div[2]/div[1]/div[1]/div[1]/form[1]/div[1]/div[1]/div[2]/label[1]/div[1]/input[1]")))
# driver.find_element_by_xpath(
# "/html[1]/body[1]/div[2]/div[1]/div[1]/div[1]/form[1]/div[1]/div[1]/div[2]/label[1]/div[1]/input[1]").click()
print("Something went wrong and idk why?")
driver.close()
我已经把中除
之外的行作为注释,因为我的主要目标是修复查找反验证码元素的问题
基本上无论我做什么,try
都不会运行,因为元素没有建立。
我想用另一种方式让它工作;如果选择时验证码选项可用,驾驶员可以等待30-80秒,直到验证码被解决。(这就是反验证码在大多数情况下需要多长时间来解决验证码问题)。但有时它们需要200秒,因此会出现错误并导致整个脚本失败。这就是我想找到这个元素的原因,因为它更简单,并且可以让脚本运行。p.s:不要介意奇怪的打印,我只是做奇怪的文本,所以当我看到文本打印出来时,我会很兴奋,当你成功的时候,看到奇怪的东西突然出现听起来很有趣,所以:)@zyrtar:为什么要使用chropath,而不是创建/编写自己的xpath。。。这很容易,只要参考一下这个@orde Hello,如果有任何文本使此线程不专业或浪费读者的时间,请给我一个编辑,以便我可以审查它,使我了解哪部分是可怕的。Thanks@PritamMaske因为我有点懒,我在第一天就找到了ChroPath,帮我度过了难关。不管怎样,谢谢你的建议@zyrtar:我只是提供了一些(潜在的)有帮助的链接到一个新的贡献者。你的问题中有很多信息,因此将其简化为一个简单的问题可能有助于回答。听起来好像您正试图绕过reCaptcha,这可能被视为针对目标站点的恶意行为。祝你好运
try:
P_Captcha_ButtonWait = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//a[@class='status'][contains(.,'Solving is in process...')]")))
if P_Captcha_ButtonWait is True:
print("Captcha is being solved. Waiting 40 seconds...")
time.sleep(40)
CaptchaSolved = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, "//div[@class='antigate_solver recaptcha solved'][contains(.,'Solved')]")))
if CaptchaSolved is True:
time.sleep(3)
print("It's rocking!!!!")
driver.find_element_by_xpath(
"/html[1]/body[1]/div[2]/div[1]/div[1]/div[1]/form[1]/div[1]/div[1]/p[3]/button[1]").click()
except TimeoutException:
# P_Email_Verification = WebDriverWait(driver, 10).until(EC.presence_of_element_located((
# By.XPATH, "/html[1]/body[1]/div[2]/div[1]/div[1]/div[1]/form[1]/div[1]/div[1]/div[2]/label[1]/div[1]/input[1]")))
# driver.find_element_by_xpath(
# "/html[1]/body[1]/div[2]/div[1]/div[1]/div[1]/form[1]/div[1]/div[1]/div[2]/label[1]/div[1]/input[1]").click()
print("Something went wrong and idk why?")
driver.close()