使用Java将元素集中在Selenium WebDriver中的正确方法

que*_*ons 48 java focus setfocus selenium-webdriver

什么相当于selenium.focus()WebDriver?

element.sendKeys("");
Run Code Online (Sandbox Code Playgroud)

要么

new Actions(driver).moveToElement(element).perform();
Run Code Online (Sandbox Code Playgroud)

我已经尝试了他们两个并且他们工作了,但哪一个总是适用于所有元素?

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

Har*_*ddy 56

以下代码 -

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();

}
Run Code Online (Sandbox Code Playgroud)

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


Rip*_*sim 13

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

WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor) driver;
jse.executeScript("document.getElementById('elementid').focus();");
Run Code Online (Sandbox Code Playgroud)


Joh*_*nP2 7

这段代码实际上没有提供焦点:

new Actions(driver).moveToElement(element).perform();
Run Code Online (Sandbox Code Playgroud)

它提供了悬停效果。

此外,JS 代码 .focus() 要求窗口处于活动状态才能工作。

js.executeScript("element.focus();");
Run Code Online (Sandbox Code Playgroud)

我发现这段代码有效:

element.sendKeys(Keys.SHIFT);
Run Code Online (Sandbox Code Playgroud)

对于我自己的代码,我同时使用:

element.sendKeys(Keys.SHIFT);
js.executeScript("element.focus();");
Run Code Online (Sandbox Code Playgroud)