硒和 Python。元素在 (x,y) 点不可点击,因为另一个元素遮住了它

Selenium and Python. Element not clickable at point (x,y) because another element obscures it

我正在尝试使用 Selenium select 网页上的复选框,并使用这行代码 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

然后,当我检查同一网页寻找 <div class="col-12 text-center"> 时,没有匹配的 HTML。

Here's the HTML of the page

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

谢谢!

在 HTML 中,某些元素在 UI 渲染中视觉上位于其他元素之上是很常见的。当使用Selenium WebElement.click()时,获取需要点击的元素的视觉维度,进行点击。如果有一个元素占据相同的视觉space,则抛出错误。

有 2 种可能的解决方案。

  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)