3
是否可以使用Selenium Webdriver运行或获取由document.elementFromPoint
提供的相同功能?使用Selenium获取元素位置
是否可以使用Selenium Webdriver运行或获取由document.elementFromPoint
提供的相同功能?使用Selenium获取元素位置
你必须使用JavaScript为:
element = driver.execute_script("""
return document.elementFromPoint(arguments[0], arguments[1]);
""", x, y)
这假定x
和y
设置为整数值。您在第一个参数后传递给execute_script
的参数在JavaScript端变为arguments[0], arguments[1]
等。 (这只是一个很好的旧arguments
object。Selenium会将您提供给execute_script
的JavaScript代码包含在函数中。)如果找不到任何内容,element
将是WebElement
或None
的实例。按照MDN page on this function一个None
值将发生在:
如果指定点位于文档的可见范围之外或任何一个坐标为负,其结果是
null
。
JavaScript null
在Python中变成了None
。
谢谢,这很有道理!如果有人知道如何做到这一点,但没有深入到页面上的JS中,那将是首选,但这也是可行的。 –
使用JavaScript时,只有在页面上没有框架或iframe时才能使用。否则,浏览器中的跨站点脚本保护禁止访问JavaScript中的其他框架。正确的解决方案是在驱动程序中实现这一点。 – Elmue
@Elmue我刚刚在Chrome中尝试过,在加载另一个网站的页面上。有用。 – Louis