0

シナリオ:-AJAXを介してエラーをチェックする登録フォームがあります-フィールドは次のとおりです:email、confEmail、fname、lname、pwd、confPwd-エラーチェックは、ユーザーが「email」フィールドに入力し、「confEmail」フィールドにタブで移動すると発生します。「pwd」フィールドと「confPwd」フィールドについても同じです。ユーザーが「email」フィールドに「test」と入力し、次のフィールドである「confEmail」にタブで移動するユーザーの動作を模倣する自動化スクリプトを作成しようとしています。これにより、AJAXチェックが呼び出され、「無効な電子メールアドレス」に関するエラーがスローされます。

テスト構成:-Linuxで記述されたテスト-Mac上のiPhoneシミュレーターで実行(もちろん)

次のコードはメールアドレスを入力します:driver.findElement(By.cssSelector(Locators.getLocator( "mobilebuy-> emailAddressField")))。sendKeys( "test");

sendKeysはフォーカスをそのフィールドから移動しないので、次にTAB/クリックを次のフィールドに送信してAJAXを起動します。どうやら、それを行うことは機能しません。AJAXは起動せず、エラーメッセージも表示されません。これをiPhoneシミュレーターで手動でシミュレートすると、機能することがわかります。

これは次のフィールドにタブで移動する必要があります:driver.findElement(By.cssSelector(Locators.getLocator( "mobilebuy-> emailAddressField")))。sendKeys(Keys.TAB);

また

これにより、AJAXを起動する次のフィールドをクリックする必要があります。driver.findElement(By.cssSelector(Locators.getLocator( "mobilebuy-> confEmailAddressField")))。click();

この問題をどのように進めるかについてのアイデアはありますか?私はそれをよく見て、「タブ」キーのユニコードを渡そうとしましたが、どちらも機能しませんでした。

4

2 に答える 2

1

まず、FirefoxDriverのみがActionクラスをサポートします(http://code.google.com/p/selenium/wiki/TipsAndTricksによる)が、InternetExplorerDriverのサポートも期待する必要があります。

次の手順を使用してこれを機能させました:-フォームに項目を入力するTypeメソッドがあります-その後、Actionクラスを使用してAjaxを起動するフィールドにクリックを送信します。これは機能しているようです。

// (WebDriver, email, confEmail, fname, lname, pwd, confPwd)
TypeRegistrationData(driver, "test/tester@com", "", "", "", "", "");

// action builder that tabs to next field
WebElement we = driver.findElement(By.cssSelector(Locators.getLocator("buy->emailAddressField")));
Actions builder = new Actions(driver);

builder.click(we); // this fires up the ajax that is expected
于 2012-06-04T14:20:55.347 に答える
0

アクション チェーンを使用してみる

Actions builder = new Actions(driver);
builder.keyDown(Keys.TAB).keyUp(Keys.TAB);
builder.build().perform();

私が本当に必死だったら、必ずしもテキストフィールドではなく、いくつかの親要素 (ボディ自体でさえも) で sendKeys を使用しようとします。

于 2012-05-16T21:46:32.750 に答える