【问题标题】:Selenium webdriver with Python on chrome - Scroll to the exact middle of an elementSelenium webdriver with Python on chrome - 滚动到元素的确切中间
【发布时间】:2016-12-28 05:30:43
【问题描述】:

我试图仅通过使用 XPATH 获取元素来单击它。我得到一个例外,即该元素在给定位置是不可点击的。

我确定元素的中心是可点击的,那么我如何获得元素的确切中间 (x,y) 并使用 Python 使用 Selenium 点击它?

编辑:

我已经找到了解决这个问题的方法:

driver.execute_script("arguments[0].scrollIntoView(true);", element)
time.sleep(0.5)
element.click()

time.sleep 是缺失的环节。

【问题讨论】:

  • 你怎么确定元素只能在中心点击,而硒本身试图点击中心的元素??
  • 您可能只需将元素滚动到视图中即可单击它。

标签: python selenium-webdriver selenium-chromedriver


【解决方案1】:

实际上 selenium 本身尝试点击元素中心位置的元素,所以这个异常通常发生在目标元素由于窗口大小或任何其他原因被其他元素覆盖时,比如它会隐藏在滚动条内等。

所以基本上如果你想将确切的元素放入视口,所以你可以点击它,你应该尝试使用scrollIntoView() 方法将当前元素滚动到浏览器窗口的可见区域,如下所示:-

element = driver.find_element..
driver.execute_script("arguments[0].scrollIntoView()", element)

【讨论】:

  • 感谢您的回答。我已经尝试了您的解决方案,但仍然出现以下异常:selenium.common.exceptions.WebDriverException:消息:未知错误:元素在点 (455、393) 处不可点击。其他元素会收到点击:

    ...

  • 你的解决方案是部分的,实际上为我解决这个问题的是使用 time.sleep(0.5) 然后 element.click()
猜你喜欢
  • 1970-01-01
  • 2017-01-03
  • 2015-04-12
  • 1970-01-01
  • 2016-04-17
  • 1970-01-01
  • 2017-12-07
  • 1970-01-01
  • 2017-07-17
相关资源
最近更新 更多