使用Selenium Webdriver测试元素是否聚焦

我真的很惊讶我在互联网上找不到使用Selenium Webdriver测试元素焦点的参考资料。

我想检查何时尝试使用必填字段提交表单提交时,焦点将移至空字段。 但我无法使用WebDriver API看到任何方法。

我将能够使用JavascriptExecutor找到焦点元素。 但阅读常见问题解答让我觉得必须有一些方法来使用驱动程序本身执行检查。

谢谢你的帮助。

driver.switchTo().activeElement()将返回当前关注的WebElement 。 为WebElement定义了相等性,因此可以调用element.equals(driver.switchTo().activeElement())

调用略有误导性的命名的driver.switchTo().activeElement()实际上并不切换焦点,也没有driver.findElement() ,所以你不需要在switchTo().defaultContent()之后switchTo().defaultContent() ; 事实上,这样做可能会模糊当前元素。

 driver.switchTo().activeElement(); 

返回当前关注的元素。

确保在使用后切换回来

 driver.switchTo().defaultContent(); 

此外,如果没有任何焦点,则返回文档的body

看看这个问题。

在Selenium中如何找到“当前”对象

您可以使用选择器’dom = document.activeElement’找到活动元素。 然后你可以断言它是否是你想要它聚焦的元素。

当您使用Driver.FindElement调用时,WebDriver应该更改焦点。 所以你是Driver上下文中的最后一个元素是活动的。

注意:这会破坏动态注入的任何元素(例如jQuery),因此您需要转到脚本路径。

@ danielwagner-hall boolean bb = driver.switchTo().activeElement().equals(driver.findElement(By.id("widget_113_si‌​gnup_username"))); 将始终通过,但如果元素不在视图范围内,则无法certificate元素处于焦点。

注意:由于信誉点不够而无法评论。

接近这个的一种方法是使用webElement.getLocation().getX(); getY()方法并引用页面上的坐标并validation其焦点。