【问题标题】:Element is not clickable (the button is blocking by other element)元素不可点击(按钮被其他元素阻挡)
【发布时间】:2018-03-06 01:17:51
【问题描述】:

我正在尝试点击此按钮:browser.find_element_by_id('btnSearch')

但是这个按钮被这个 div 标签阻止了:<div id="actionSearch" class="row pull-right">

当它被 actionSearch div 阻止时,我如何去点击这个 id='btnSearch" 的按钮?

我尝试了以下方法:

  • browser.find_element_by_id('btnSearch').click()

  • browser.implicitly_wait(10)
    el = browser.find_element_by_xpath('//*[@id="btnSearch"]')
    ActionChains(browser).move_to_element_with_offset(el, 1827, 270)
    ActionChains(browser).click()
    ActionChains(browser).perform()
    
  • element = browser.find_element_by_id('btnSearch')
    browser.execute_script("arguments[0].click();", element)
    
  • wait(browser, 10).until(EC.element_to_be_clickable((By.XPATH, //*[@id="btnSearch"]'))).click()
    

这些都不起作用。

谁能帮我解决这个问题?我花了两天时间试图点击这个按钮!!请帮忙!

【问题讨论】:

标签: python html css selenium selenium-chromedriver


【解决方案1】:

考虑提供的 HTML 源图像(提示:不要将其作为图像提供,而是作为文本提供)我可以假设所需元素位于页面底部,您可能需要向下滚动页面才能处理它.

试试下面的代码

link = browser.find_element_by_id("btnSearch")
browser.execute_script("arguments[0].scrollIntoView()", link)
link.click()

请注意,链接不是伪元素(不在::before/::after 伪元素内),所以它不可能是您的问题的原因

至于你的代码:

ActionChains(browser).move_to_element_with_offset(el, 1827, 270)
ActionChains(browser).click()
ActionChains(browser).perform()

在这里,您尝试滚动到具有巨大偏移的链接,然后单击当前鼠标位置 - 不在链接上

你可以尝试修改为

ActionChains(browser).move_to_element(el)
ActionChains(browser).click(el)  # Pass WebElement you want to click as argument to `click()`
ActionChains(browser).perform()

【讨论】:

  • 感谢您抽出宝贵时间回答!明天我回去工作时试试这个。我刚刚发现元素不可点击的原因是因为上面的 div id="actionSearch" 阻止了我试图点击的按钮。我真的希望您的解决方案有效。迫不及待想明天试试。
  • 它没有用。我得到了这个:消息:未知错误:元素 ... 在点 (1827, 270) 是不可点击的。其他元素会收到点击:
  • 在处理链接之前可以尝试添加wait(browser, 10).until_not(EC.visibility_of_element_located((By.XPATH, //div[@class="k-overlay"]')))吗?
  • 不确定我是否添加正确:这是我所做的:wait(browser, 10).until_not(EC.visibility_of_element_located((By.XPATH, '//div[@class="k-overlay"]'))) link = browser.find_element_by_id("btnSearch") browser.execute_script("arguments[0].scrollIntoView()", link) link.click() 错误消息:-> 132 wait(browser, 10).until_not(EC.visibility_of_element_located((By.XPATH, '//div[@class="k-overlay"]'))) ---> 96 raise TimeoutException(message)TimeoutException: Message:
  • 由于我无法完全理解目标网络应用程序的行为,因此很难确定如何解决该问题?你能分享页面网址还是不公开?
猜你喜欢
  • 1970-01-01
  • 2016-06-08
  • 2016-12-19
  • 2018-03-16
  • 2018-10-26
  • 2017-04-16
  • 2021-08-26
  • 1970-01-01
  • 2015-01-12
相关资源
最近更新 更多