如何在使用Java的Selenium WebDriver中按下“TAB”键然后按下“ENTER”键?

6
我是用Java和Selenium WebDriver进行自动化测试。我想要点击选项卡并检查其功能。
我可以使用Tab键来获取按钮,如下所示:
WebElement webElement = driver.findElementByXPath("");
webElement.sendKeys(Keys.TAB);
webElement.sendKeys(Keys.ENTER);

我有一个包含多个字段的表单,我想要在按下tab键时跟踪控件是否成功地移动到下一个字段。此外,我还想检查我的控件位于哪里,下面是我的表单 image
但是,我怎样才能逐个点击tab键? 基本上,我需要通过按Tab键然后按Enter键来单击按钮。
我正在学习selenium。 请帮忙。提前致谢。

1
首先,您应该点击框内,然后发送TAB,接着是ESCAPE(请记住,“ENTER”不是键盘上的“enter”,正确的是“ESCAPE”)。 - Stan E
请问您能提供这个表单的链接或HTML吗? - Eugene
4个回答

3
请参考适用于我的示例表单的解决方案。
FormTab.html:
<!DOCTYPE html>
<html>
<body>
<form>
    First name:<br>
    <input type="text" name="firstname" value="Mickey">
    <br>
    Last name:<br>
    <input type="text" name="lastname" value="Mouse">
    <br><br>
    <input type="submit" name="submit" value="Submit">
</form>
<p>If you click "Submit", nothing happens.</p>
</body>
</html>

Java 代码:

WebDriver driver = new FirefoxDriver();

//Insert path to your file
driver.get("FormTab.html");

//Three example elements
WebElement firstField = driver.findElement(By.name("firstname"));
WebElement secondField = driver.findElement(By.name("lastname"));
WebElement submit = driver.findElement(By.name("submit"));

//Start with the first field
firstField.sendKeys();
//Verify that we in the first field
if(driver.switchTo().activeElement().equals(firstField))
    System.out.println("First element is in a focus");
else
    //Add Assertion here - stop execution
    System.out.println("ASSERTION - first element not in the focus");

firstField.sendKeys(Keys.TAB);

//Verify that we in the second field
if(driver.switchTo().activeElement().equals(secondField))
    System.out.println("Second element is in a focus");
else
    //Add Assertion here - stop execution
    System.out.println("ASSERTION - second element not in the focus");

secondField.sendKeys(Keys.TAB);

if(driver.switchTo().activeElement().equals(submit))
    System.out.println("Submit element is in a focus");
else
    //Add Assertion here - stop execution
    System.out.println("ASSERTION - submit element not in the focus");

//Click the button 
submit.click();

//Need be closed also in case the assertion - use @After
driver.close();

2

请尝试以下代码。这个代码可以正常工作。

        Actions builder = new Actions(driver);         
        builder.SendKeys(OpenQA.Selenium.Keys.Tab).Build().Perform();
        builder.Release().Perform();            
        builder.SendKeys(OpenQA.Selenium.Keys.Tab).Build().Perform();
        builder.Release().Perform();

0
Actions builder = new Actions(driver);
        Action enter= builder
                .keyDown(Keys.TAB)
                .build();
enter.perform();

 Action releaseEnter= builder
                .keyUp(Keys.ENTER)
                .build();
releaseEnter.perform();

你的代码似乎只有按Enter键,但没有按Tab键的代码。 - Ripon Al Wasim

0
你可以尝试使用Java的机器人类来模拟按下Tab、Enter或其他任何按钮,无论你在页面上需要按多少次。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接