【问题标题】:Element is not clickable at point (x,y.5) because another element obscures it元素在点 (x,y.5) 处不可点击,因为另一个元素遮住了它
【发布时间】:2018-08-21 12:21:36
【问题描述】:

我试图点击一个元素但收到错误:

Element is not clickable at point (x,y.5)

因为另一个元素遮住了它。

我已经尝试先移动到该元素,然后单击并通过最小化窗口然后单击来更改坐标,但两种方法都失败了。可能重复的问题有我已经尝试过的答案,但没有一个对我有用。

此外,相同的代码在不同的 PC 上运行。

如何解决?

【问题讨论】:

标签: python selenium selenium-webdriver


【解决方案1】:

这通常在element.click() 不起作用时起作用:

element = driver.find_element_by_xpath(xpath)
driver.execute_script("arguments[0].click();", element)

【讨论】:

  • 非常感谢!!
  • 这应该是公认的解决方案。谢谢你的残骸
【解决方案2】:

您可能可以做一件事。虽然很粗糙,但我马上承认。

可以模拟点击需要的元素前面的元素,然后模拟按键[TAB]和[ENTER]。


实际上,我最近一直看到这个错误。我使用的是由裸硒提供的常用.click() 命令——比如driver.find_element_by_xpath(xpath).click()

我发现使用 ActionChains 解决了这个问题。

ActionChains(driver).move_to_element(element).click().perform() 之类的东西对我有用。

你需要:

from selenium.webdriver.common.action_chains import ActionChains

【讨论】:

  • 我已经尝试过 ActionChains,但仍然遇到同样的错误。
  • 在前面的元素上使用键盘操作(TAB 然后 RETURN),它起作用了。
  • ActionChains 非常好的解决方案
  • ActionChains 真是天才! :-)
【解决方案3】:

这是@wrecks 的想法,但如果使用 php-webdriver 你可以使用下面的代码:

$element = $driver->findElement(WebDriverBy::cssSelector($id_login));
$driver->executeScript("arguments[0].click();", [$element]);

【讨论】:

    【解决方案4】:

    发现有时候网页加载不全,答案很简单,加个time.sleep(2)

    【讨论】:

      猜你喜欢
      • 2021-07-27
      • 2020-02-03
      • 2019-07-05
      • 1970-01-01
      • 2020-06-10
      • 2020-09-24
      • 1970-01-01
      • 2021-08-03
      相关资源
      最近更新 更多