使用Java在Selenium WebDriver中聚焦元素的正确方法

2022-08-31 17:16:19

WebDriver 的等效项是什么?selenium.focus()

element.sendKeys("");

new Actions(driver).moveToElement(element).perform();

我已经尝试了它们,它们都有效,但是哪一个总是适用于所有元素?

哪一个是任何元素(如按钮,链接等)的正确方法?这对我来说很重要,因为该功能将在不同的UI上使用。


答案 1

以下代码 -

element.sendKeys("");

尝试找到输入标签框以输入一些信息,而

new Actions(driver).moveToElement(element).perform();

更合适,因为它适用于图像元素,链接元素,下拉框等。

因此,使用 moveToElement() 方法更有意义地关注网页上的任何通用 WebElement。

对于输入框,您必须在元素上单击()以聚焦。

new Actions(driver).moveToElement(element).click().perform();

而对于链接和图像,鼠标将位于该特定元素上,您可以决定根据要执行的操作在其上单击()。

如果输入标签上的 click() 不起作用 -

由于您希望此函数是通用的,因此您首先检查webElement是否是输入标记 -

if("input".equals(element.getTagName()){
   element.sendKeys("");
} 
else{
   new Actions(driver).moveToElement(element).perform();

}

您可以根据自己的喜好进行类似的更改。


答案 2

您可以使用JS,如下所示:

WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor) driver;
jse.executeScript("document.getElementById('elementid').focus();");