我正在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"));
}
这是上述代码的输出。
当我使用冒号代替下划线时,同样的事情发生了。 请帮我解决这个问题。如果您需要更多信息,请告诉我。感谢
答案 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)方法将两个按钮推到一起,从而输入下划线。
以下是我收到的输出的屏幕截图。
感谢所有人。