使用Selenium Webdriver测试一个元素是否被聚焦
本文关键字:元素 一个 是否 聚焦 Webdriver Selenium 测试 使用 | 更新日期: 2023-09-27 18:09:34
我真的很惊讶我在互联网上找不到使用Selenium Webdriver测试元素焦点的参考。
我想检查当一个表单提交尝试与一个必填字段错过时,焦点被移动到空字段。但我看不出有任何方法使用WebDriver API来做到这一点。
我将能够使用JavascriptExecutor找到焦点元素。但是阅读FAQ让我想到一定有一些方法可以使用驱动程序本身来执行检查。
谢谢你的帮助
driver.switchTo().activeElement()
将返回当前聚焦的WebElement
。对于WebElement
,等式已经定义好了,所以可以调用element.equals(driver.switchTo().activeElement())
。
调用稍有误导的名称driver.switchTo().activeElement()
实际上不会切换焦点,driver.findElement()
也不会,因此您不需要在switchTo().defaultContent()
之后;事实上,这样做可能会模糊当前元素。
driver.switchTo().activeElement();
返回当前聚焦的元素。
确保在使用
后切换回来driver.switchTo().defaultContent();
如果没有焦点,则返回文档的body
。
也看看这个问题。
在Selenium中我如何找到"Current"div对象
您可以使用选择器'dom=document.activeElement'找到活动元素。然后你可以断言它是否是你想要聚焦的元素
WebDriver应该在使用Driver.FindElement
调用时改变焦点。所以你在Driver上下文中的最后一个元素是活动的。
注意:这对于任何动态注入的元素(例如jQuery)都是中断的,所以你需要走脚本路线。
@danielwagner-hall boolean bb = driver.switchTo().activeElement().equals(driver.findElement(By.id("widget_113_signup_username")));
总是会通过,但是如果元素不在视图中,它不能证明元素被聚焦了。
注:无法评论,因为没有足够的声望积分。
解决这个问题的一种方法是使用webElement.getLocation().getX();
getY()
方法并引用页面上的坐标并验证其焦点。