0

TestFXでテストプログラムを書いているJavaFXで簡単なログインフォームを書いています。私の 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 に入力する必要があります。

上記の質問では、アンダースコアを入力したかったのです。通常、アンダースコアを入力するときは、2 つのキー、つまりシフトとハイフン (-) を同時に押します。同様に、これら 2 つのキーのキーコードを使用して、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 に答える