WebDriver的selenium.focus()
等效什么?使用Java在Selenium WebDriver中集中元素的正确方法
element.sendKeys("");
或
new Actions(driver).moveToElement(element).perform();
我已经试过他们与他们的工作,但一个总是在所有元素上工作?
哪一个是任何元素(如按钮,链接等)的正确方法?这对我来说很重要,因为该功能将用于不同的用户界面。
WebDriver的selenium.focus()
等效什么?使用Java在Selenium WebDriver中集中元素的正确方法
element.sendKeys("");
或
new Actions(driver).moveToElement(element).perform();
我已经试过他们与他们的工作,但一个总是在所有元素上工作?
哪一个是任何元素(如按钮,链接等)的正确方法?这对我来说很重要,因为该功能将用于不同的用户界面。
下面的代码 -
element.sendKeys("");
试图找到一个输入标签框输入一些信息,而
new Actions(driver).moveToElement(element).perform();
是比较合适的,因为它会为图像元素的工作,链接元素,下拉框等。
因此使用moveToElement()方法更适用于关注网页上的任何通用WebElement。
对于输入框,您将必须单击()上的要关注的元素。
new Actions(driver).moveToElement(element).click().perform();
而链接和图片鼠标将超过特定的元素,你可以根据你想要做什么决定点击()就可以了。
如果点击()上的输入标签不起作用 -
既然你要这个功能是通用的,你先检查webElement是输入标签或不 -
if("input".equals(element.getTagName()){
element.sendKeys("");
}
else{
new Actions(driver).moveToElement(element).perform();
}
您可以根据自己的喜好进行类似的更改。
您可以使用JS如下:
WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor) driver;
jse.executeScript("document.getElementById('elementid').focus();");
FWIW,我有什么,我认为是相关问题的和一个解决办法想出了:我写了一个Chrome扩展是做了一个document.execCommand(“贴')放到一个textarea中,重点放在窗口卸载上,以便用系统剪贴板内容填充元素。这可以手动完成100%的工作,但execCommand在Selenium下运行时几乎总是返回false。
我在最初的driver.get(myChromeExtensionURL)之后添加了一个driver.refresh(),现在它在100%的时间内工作。这是在Mac OS 10.9上的Selenium驱动程序版本2.16.333243和Chrome版本43。
当我研究这个问题时,我没有看到这个解决方法的任何提及,所以我想我会将我的发现记录在我的Selenium/focus/execCommand('paste')脚步中。
焦点仅集中在窗口的功能。
使用((JavascriptExecutor)webDriver).executeScript("window.focus();");
是肯定的。
它也适用于输入框吗? – questions
让我知道我编辑的答案是否有帮助? –
这应该工作。谢谢哥们! :) – questions