【问题标题】:Can't find the XPath of a button in frame在框架中找不到按钮的 XPath
【发布时间】:2018-06-14 15:23:25
【问题描述】:

我尝试进入这个网站:https://www.google.com/recaptcha/api2/demo

然后点击这个按钮:

然后,我尝试点击这个按钮:

最后,在这个按钮上:

我使用了这个代码:

 driver1 = webdriver.Firefox()
 driver1.get("https://www.google.com/recaptcha/api2/demo")
 driver1.switch_to.frame(driver1.find_element_by_css_selector('#recaptcha-               
 demo > div:nth-child(1) > div:nth-child(1) > iframe:nth-child(1)'))
 driver1.find_element_by_xpath('//*[@class="recaptcha-checkbox-
 checkmark"]').click()
 time.sleep(4)
 driver1.switch_to.default_content()
 driver1.switch_to.frame(driver1.find_element_by_css_selector("body >      
 div:nth-child(2) > div:nth-child(4) > iframe:nth-child(1)"))
 driver1.find_element_by_xpath('//*[@id="recaptcha-audio-button"]').click()
 driver1.find_element_by_css_selector('.rc-audiochallenge-tdownload-link').click()

不幸的是,它只点击了第一个和第二个按钮,而没有点击第三个按钮。为什么会这样? 我检查了第二个和第三个按钮在同一个框架中,所以看起来很奇怪,也许我错了?

【问题讨论】:

  • reCAPTCHA 是为了防止机器人绕过它而创建的。
  • 哦,伙计,这不是真的,作为证明我点击了那里的两个按钮...
  • 我不会帮你的,机器人。

标签: python selenium xpath css-selectors frame


【解决方案1】:

在点击下载按钮之前添加一些等待,如下所示。

wait = WebDriverWait(driver1, 10)
element = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.rc-audiochallenge-tdownload-link')))  
element.click()

我试过了,效果很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-23
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多