0

セレンでテスト スクリプトを自動化しようとしています。自動化するアクティビティのシナリオ:

  1. 最初にページ URL を自動的に開く必要があります。
  2. 左のナビゲーションをクリックします。
  3. 次に、ページにドロップダウンが表示されます。ドロップダウンから固定値を選択する必要があります(たとえば、会社)
  4. ページの下部にある作成ボタンをクリックします。

私の場合、コードはドロップダウンの人口まで機能していますが、その後、コードは次のアクションとして作成ボタンをクリックできません。コマンドコンソールに表示されたエラーメッセージは次のとおりです。

エレメント名 = create がセッション c48334c30....96ed で見つかりません

これが私のコードです:

public class testing {

    Selenium selenium = null;

    @Test
    public void submit() throws Exception {
        selenium = new DefaultSelenium("localhost", 4545, "*firefox", "URL");
        selenium.start();
        selenium.open("URL");
        selenium.windowFocus();
        selenium.windowMaximize();
        selenium.click("link=Work with company names");
        selenium.waitForPageToLoad("30000");
        selenium.select("//select[@name='company_id']", "label=company");
        selenium.waitForPageToLoad("3000");
        selenium.click("name = create");

    }
}

「作成」という名前のボタンをクリックできない理由が理解できないため、これを解決するための提案を提供してください。私もselenium.click("xpath=//button[matches(@id,'.*create')]");代わりに使用しようとしましselenium.click("name = create")たが、うまくいきませんでした。

このエラーの原因と解決方法を教えてください。ありがとう。

4

3 に答える 3

1

1) ページの html コードを提供するとよいでしょう。

2) 任意の要素 (何らかのアクションの後にロードされる) をクリックする前に、WaitForElementPresent (Selenium IDE から) を使用することをお勧めします。つまり、その要素が実際に存在することを確認します。Selenium はかなり高速に動作し、要素が実際に読み込まれる前に要素をクリックしようとする場合があります。

次のようなものを使用できます。

public bool waitForElementPresent(string Xpath) {
bool present = false;
for (int second = 0; ; second++) {
if (second >= 5) {
break;
}
if (IsElementPresent(Xpath)) {
present = true;
break;
}
Thread.Sleep(1000);
}
return present;
}
于 2013-04-03T07:28:01.673 に答える
0

これで試してください

selenium.click("//*[contains(@name,'create')]");
于 2013-04-02T16:52:07.567 に答える