Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
元素有时找不到[Selenium,Python]_Python_Selenium_Selenium Webdriver_Xpath_Element - Fatal编程技术网

元素有时找不到[Selenium,Python]

元素有时找不到[Selenium,Python],python,selenium,selenium-webdriver,xpath,element,Python,Selenium,Selenium Webdriver,Xpath,Element,我正在使用Selenium自动化一个过程,并使用ChroPath查找XPath之类的元素,以便于使用。但有时元素不可用;例如: 这是我为验证码部分编写的代码行,我实际上使用了Anti-Captcha.com扩展,我想找到反验证码在解决验证码时给出的文本。看起来是这样的: 另外,我正在尝试的网站是ProtonMail,在这个页面上,你可以验证自己是否是人类 我已经编写了使用电子邮件验证自己的部分,但我希望Captcha作为主要用途,电子邮件验证作为反手,以防Captcha出现问题 我试着寻找元

我正在使用Selenium自动化一个过程,并使用ChroPath查找XPath之类的元素,以便于使用。但有时元素不可用;例如:

这是我为验证码部分编写的代码行,我实际上使用了Anti-Captcha.com扩展,我想找到反验证码在解决验证码时给出的文本。看起来是这样的:

另外,我正在尝试的网站是ProtonMail,在这个页面上,你可以验证自己是否是人类

我已经编写了使用电子邮件验证自己的部分,但我希望Captcha作为主要用途,电子邮件验证作为反手,以防Captcha出现问题

我试着寻找元素的位置,但我能找到的唯一东西是用图像搜索器? 我被迫在大多数情况下使用带有绝对方向的PyAutoGui来处理一些元素,比如按钮单击或某些字段中带有绝对方向的单击,因为我无法正确地找到XPath

我想知道体验用户定位元素的一些方法

更新:

这是我试图修复代码并尝试不同方法但仍然不起作用的另一次尝试

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()