我真的很惊讶我在互联网上找不到使用Selenium Webdriver测试元素焦点的参考资料。
我想检查何时尝试使用必填字段提交表单提交时,焦点将移至空字段。但我无法使用WebDriver API看到任何方法。
我将能够使用JavascriptExecutor找到焦点元素。但是阅读FAQ让我觉得必须有一些方法来使用驱动程序本身来执行检查。
感谢您的帮助。
答案 0 :(得分:27)
driver.switchTo().activeElement()
将返回当前关注的WebElement
。 WebElement
已明确定义了平等性,因此您可以调用element.equals(driver.switchTo().activeElement())
。
调用略有误导性的名为driver.switchTo().activeElement()
实际上并不会切换焦点,driver.findElement()
也不会,所以您之后不需要switchTo().defaultContent()
;事实上,这样做可能会模糊当前元素。
答案 1 :(得分:4)
driver.switchTo().activeElement();
返回当前关注的元素。
确保在使用
后切换回来driver.switchTo().defaultContent();
此外,如果没有任何焦点,则返回文档的body
。
同时看看这个问题。
答案 2 :(得分:0)
您可以使用选择器'dom = document.activeElement'找到活动元素。然后你可以断言它是否是你想要聚焦的元素。
答案 3 :(得分:0)
当您使用Driver.FindElement
来电时,WebDriver应该会改变焦点。所以你在Driver上下文中的最后一个元素是活动的。
注意:这会破坏动态注入的任何元素(例如jQuery),因此您需要转到脚本路径。
答案 4 :(得分:-1)
@ danielwagner-hall boolean bb = driver.switchTo().activeElement().equals(driver.findElement(By.id("widget_113_signup_username")));
将始终通过,但如果元素不在视图范围内,则无法证明该元素已成为焦点。
注意:由于声誉点不够而无法评论。
接近此方法的一种方法是使用webElement.getLocation().getX();
getY()
方法并引用页面上的坐标并验证其焦点。