4

私のチームと私は最近、Selenium Web Driver と JUnit を使用して自動化されたスクリプトの開発に取り組み始めました。私は問題に直面しており、文字通り、進め方についてのアイデアがありません。どんな提案も役に立ちます。

問題は次のとおりです。フォームに 2 つの Excel をアップロードし、送信ボタンを押してアップロードを確認するページがあります。

アップロードが完了すると、データベースにデータが入力され、次のページで各 Excel の行数が確認されます。

「ラベル」タイプのアップロードを確認する要素を取得しようとしています。

これはすべて、私のPC(Windows 7、Firefox Webdriver)でローカルに正常に機能します。

コードをアップロードし、ジェンキンスがそれをビルド/実行すると、「要素が見つかりません」というメッセージが表示され、テストが失敗します。

ジェンキンが実行するものに視覚的にアクセスできないため、要素の確認 (ジェンキンでは失敗) を に置き換えましたgetPageSource()

getPageSource()検索しようとしている要素で表示されると予想されるページを返します(ローカルとジェンキンの両方で)。

何が起こっているのかについてのアイデアはありますか?

ノート:

10 秒の thread.sleep が 2 つあります。次のページがロードされ、Excel が正常に送信されたことを確認するために、各 Excel をアップロードするときに 1 つ、[送信] をクリックした後に 1 つ。

xpathを使用して要素を見つけようとします。実際、Firefox の Firebug と Chrome の Web 開発者から提供された xpath の両方を使用しました。xpathに問題がないことを確認するだけです。両方の xpath は、ローカル マシンでは要素を正常に見つけますが、ジェンキンでは失敗します。

テストを (ローカルおよび Jenkins で) 実行すると、データベースにデータが入力されていることがわかります。

コードがなくて申し訳ありませんが、共有できるものは限られています。

4

1 に答える 1

0

Try using fluentwait instead of Thread.sleep(). Your element might not have been loaded in 10 seconds you may try this

// Waiting 30 seconds for an element to be present on the page, checking
 // for its presence once every 5 seconds.
   Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
   .withTimeout(30, SECONDS)
   .pollingEvery(5, SECONDS)
   .ignoring(NoSuchElementException.class);

WebElement foo = wait.until(new Function<WebDriver, WebElement>() {
 public WebElement apply(WebDriver driver) {
   return driver.findElement(By.id("foo"));
 }
}); 

as given here.

于 2012-10-24T11:17:40.503 に答える