【问题标题】:Selenium Locating Unclickable ElementSelenium 定位不可点击的元素
【发布时间】:2023-03-11 05:25:02
【问题描述】:

我正在尝试定位一个元素,但我无法点击它。 id 是(“save-all-conditionally”),但如果我点击它,它就不起作用。我尝试了css.selectorxpath 和所有其他方法,但没有任何效果!

【问题讨论】:

  • 分享网址并说明您要从页面中提取的信息是什么。
  • 网址是gmx.net,如果您是第一次访问该网站,您必须接受cookies。 (图)我只想点击Accept按钮(绿色)
  • UI 的屏幕截图很棒,代码或 HTML 的屏幕截图则不然。请阅读为什么a screenshot of code/HTML is a bad idea。粘贴代码/HTML 并正确格式化。
  • 请阅读How to Ask,尤其是关于minimal reproducible example (MCVE) 的部分。获取您正在使用的代码,将其简化为 MCVE,然后发布该代码,格式正确。同时发布完整的错误消息,格式正确,并指出错误发生在哪一行。

标签: python selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

有 2 个框架,框架内框架。 您需要先切换到父框架,然后再切换到子框架。 这是工作代码:

driver = webdriver.Chrome(ChromeDriverManager().install())
driver.maximize_window()
driver.get("https://www.gmx.net/consent-management/")
driver.implicitly_wait(10)
firstFrame = driver.find_element_by_xpath("//iframe[@class='permission-core-iframe']")
driver.switch_to.frame(firstFrame)
driver.switch_to.frame(0)
driver.find_element_by_xpath("//button[@id='save-all-conditionally']").click()

【讨论】:

  • 非常感谢,它正在工作:)
【解决方案2】:

试试这个代码,看看它是否有效:

ele = driver.find_element_by_xpath("//*[@id='save-all-conditionally']")
ele.click()

【讨论】:

  • 不适合我:(
【解决方案3】:

尚未测试:

iframe = driver.find_elements_by_tag_name('iframe')
if len(iframe) == 1:
    driver.switch_to.frame(iframe[0])
    button = driver.find_element_by_id('save-all-conditionally')
    if button:
        button.click()

由于iframe没有id,通过tag name获取,应该是一个iframe,使用switch_to.frame切换到iframe内容,获取按钮点击

【讨论】:

  • 很抱歉,但它不起作用。它对你有用吗?
  • 我没有在那个网站上测试过,但这就是点击按钮的方法,因为按钮有 id 它应该很容易
  • 是的,我知道,但不幸的是没有
  • 这种方法不适用于 Selenium,从来没有。如果元素不存在,会发生什么情况,第一行抛出一个异常并且永远不会到达第二行。如果您正在尝试测试一个元素是否存在(与此问题无关),那么可以使用button = driver.find_elements(By.ID, 'save-all-conditionally') if button: button[0].click()
  • 我认为问题在于按钮在 iframe 内
猜你喜欢
  • 2015-06-13
  • 1970-01-01
  • 2018-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多