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

本文关键字:元素 一个 是否 聚焦 Webdriver Selenium 测试 使用 | 更新日期: 2023-09-27 18:09:34

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

我想检查当一个表单提交尝试与一个必填字段错过时,焦点被移动到空字段。但我看不出有任何方法使用WebDriver API来做到这一点。

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

谢谢你的帮助

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

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_si‌​gnup_username")));总是会通过,但是如果元素不在视图中,它不能证明元素被聚焦了。

注:无法评论,因为没有足够的声望积分。

解决这个问题的一种方法是使用webElement.getLocation().getX(); getY()方法并引用页面上的坐标并验证其焦点。