【问题标题】:Selenium and Python. Element not clickable at point (x,y) because another element obscures it硒和 Python。元素在点 (x,y) 处不可点击,因为另一个元素遮住了它
【发布时间】:2021-07-27 08:29:12
【问题描述】:

我正在尝试使用 Selenium 和 Python 使用这行代码在网页上选择一个复选框

self.driver.find_element_by_id('lg_1166').click()

但收到此错误消息

Message: Element <input id="lg_1699" name="lg_1699" type="checkbox"> is not clickable at point (284,888) because another element <div class="col-12 text-center"> obscures it

然后,当我检查同一网页以查找 &lt;div class="col-12 text-center"&gt; 时,没有匹配的 HTML。

Here's the HTML of the page

我不熟悉 Selenium 中的 waits,想知道是否有人可以帮助我解决此问题。

谢谢!

【问题讨论】:

标签: html python-3.x selenium firefox selenium-firefoxdriver


【解决方案1】:

在 HTML 中,某些元素在 UI 渲染中被视觉地放置在其他元素之上是很常见的。使用 SeleniumWebElement.click() 时,获取需要点击的元素的视觉维度,并执行点击。如果有一个元素占用相同的视觉空间,则会抛出错误。

有两种可能的解决方案。

  1. 您可以使用下面的显式等待等到元素可点击

    element = WebDriverWait(self.driver, 20).until(EC.presence_of_element_located((By.ID, 'lg_1166')))
    element.click();
    
  2. 使用 javascript 执行器点击元素。这会绕过视觉点击触发对元素的 javascript 点击。

    element = driver.find_element_by_id('lg_1166')
    driver.execute_script("arguments[0].click();", element)
    

【讨论】:

  • 这很完美!非常感谢!
猜你喜欢
  • 2018-08-21
  • 2020-02-03
  • 2019-07-05
  • 1970-01-01
  • 2020-06-10
  • 2020-09-24
  • 1970-01-01
  • 2021-08-03
相关资源
最近更新 更多