如何使用TestFX在包含下划线的textfield中编写字符串?

时间:2014-12-22 07:06:40

标签: testing javafx automation testfx

我正在JavaFX中编写一个简单的登录表单,我正在TestFX中编写一个测试程序。我的TestFX脚本自动在文本字段中键入凭据并单击登录按钮,它可以进一步工作。

但是,当我希望脚本键入包含下划线的凭据时,它不会键入下划线和类型,直到下划线出现。我在下划线之前使用了反斜杠,但它并没有帮助我。

以下是我的登录页面的截图。

enter image description here

下面是我的测试脚本,当我给出没有下划线的字符串时它可以正常工作。

@Test
public void invalidCredentialsShouldNotLogin()
{
    controller.click("#username").type("invalid");
    controller.click("#password").type("invalid");
    controller.click("#button");

    verifyThat("#welcome", hasText("Login failed"));
}

这是一个脚本,它试图键入一个包含下划线的字符串,并且不能按预期工作,并将异常作为无效的密钥代码。

@Test
public void invalidCredentialsShouldNotLogin()
{
    controller.click("#username").type("user_name");
    controller.click("#password").type("invalid");
    controller.click("#button");

    verifyThat("#welcome", hasText("Login failed"));
}

这是上述代码的输出。

enter image description here

当我使用冒号代替下划线时,同样的事情发生了。 请帮我解决这个问题。如果您需要更多信息,请告诉我。感谢

1 个答案:

答案 0 :(得分:1)

我已经得到了这个问题的答案。实际上,每个特殊字符(如下划线或冒号)都有一个与之关联的键码。我们必须使用该键代码使用TestFX脚本键入TextField。

在上面的问题中,我想输入下划线。通常当我们输入下划线时,我们按下两个键,即shift和连字符( - )。同样,我们将使用这两个键的键码来使用TestFX脚本键入下划线。

以下是适用于我的代码,并在TextField中键入下划线。

@Test
public void enterCredentialsWithUnderscore()
{
    TextField usernameField = (TextField)GuiTest.find("#username");
    if(username.indexOf("_") != -1)
    {
        String[] tokens = username.split("_");
        for(int i=0; i<tokens.length; i++)
        {
            if (i == 0)
                controller.click(usernameField).type(tokens[i]);
            else
                controller.push(KeyCode.SHIFT, KeyCode.MINUS).type(tokens[i]);
        }
    }
}

KeyCode.MINUS是连字键的键码。 push(KeyCode.SHIFT,KeyCode.MINUS)方法将两个按钮推到一起,从而输入下划线。

以下是我收到的输出的屏幕截图。

enter image description here

感谢所有人。