0

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

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

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

在此处输入图像描述

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

@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"));
}

这是上面代码的输出。

在此处输入图像描述

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

4

1 回答 1

2

我已经得到了这个问题的答案。实际上,像下划线或冒号这样的特殊字符都有一个与之关联的键码。我们必须使用该键码使用 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) 方法将两个按钮推到一起,从而输入下划线。

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

在此处输入图像描述

谢谢大家。

于 2015-01-23T05:51:00.217 回答