2015-05-04 105 views

回答

6

你必须使用JavaScript为:

element = driver.execute_script(""" 
return document.elementFromPoint(arguments[0], arguments[1]); 
""", x, y) 

这假定xy设置为整数值。您在第一个参数后传递给execute_script的参数在JavaScript端变为arguments[0], arguments[1]等。 (这只是一个很好的旧arguments object。Selenium会将您提供给execute_script的JavaScript代码包含在函数中。)如果找不到任何内容,element将是WebElementNone的实例。按照MDN page on this function一个None值将发生在:

如果指定点位于文档的可见范围之外或任何一个坐标为负,其结果是null

JavaScript null在Python中变成了None

+0

谢谢,这很有道理!如果有人知道如何做到这一点,但没有深入到页面上的JS中,那将是首选,但这也是可行的。 –

+0

使用JavaScript时,只有在页面上没有框架或iframe时才能使用。否则,浏览器中的跨站点脚本保护禁止访问JavaScript中的其他框架。正确的解决方案是在驱动程序中实现这一点。 – Elmue

+0

@Elmue我刚刚在Chrome中尝试过,在加载另一个网站的页面上。有用。 – Louis