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

时间:2011-09-26 08:01:11

标签: c# selenium webdriver selenium-webdriver

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

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

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

感谢您的帮助。

5 个答案:

答案 0 :(得分:27)

driver.switchTo().activeElement()将返回当前关注的WebElementWebElement已明确定义了平等性,因此您可以调用element.equals(driver.switchTo().activeElement())

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

答案 1 :(得分:4)

driver.switchTo().activeElement();

返回当前关注的元素。

确保在使用

后切换回来
driver.switchTo().defaultContent();

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

同时看看这个问题。

In Selenium how do I find the "Current" object

答案 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_si‌​gnup_username")));将始终通过,但如果元素不在视图范围内,则无法证明该元素已成为焦点。

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

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