2016-12-22 4 views
0

セレンでリンクを次々と起動するにはどうすればいいですか?私は1つのアイコンをクリックしています.30秒後に新しいページが開きます。ページが消えたら、ホームページで別のアイコンを起動する必要があります。どのように私はセレンのWebドライバでそれを行うのですか?ここでWebページを順番に起動するSelenium Webドライバ

は私のXPathです:

driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); 
driver.findElement(By.xpath("//html/body/form/div[4]/div/div[3]/div/div/div/div[4]/table[2]/tbody/tr[2]/td[4]/span[2]")).click(); 
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); 
driver.findElement(By.xpath("//html/body/form/div[4]/div/div[3]/div/div/div/div[4]/table[2]/tbody/tr[3]/td[4]/span[2]")).click(); 
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); 
driver.findElement(By.xpath("//html/body/form/div[4]/div/div[3]/div/div/div/div[4]/table[2]/tbody/tr[4]/td[4]/span[2]")).click(); 
+0

達成したいことがわかりませんでした。 'implicitWait'のコマンドはドライバのタイムアウトを設定します。これは、ドライバが要素の位置を特定しようとすると、指定された時間までの応答を待機することを意味します。私はこれがあなたが望むものではないと思う。リンクを並行して開きたいですか?あなたは何かを開いて/したいですか?テストの結果として正確に何を望んでいるのかを詳しく説明して質問を改善してください(質問を編集してください - コメントのすべてを言わないでください)。 – Tom

答えて

0

私はあなたのポストから理解するものから新しいウィンドウを開き、アイコン、をクリックしたいことを、新しいウィンドウが30奇数秒後に閉じていると、あなた新しく新しいウィンドウを開くには、次のアイコンをクリックする必要があります。これが当てはまる場合は、次に読んでください。

暗黙の待機を正しく使用しているかどうかは不明です。継続時間が変更されない場合、コマンドを繰り返す必要はありません。これは、ドライバの寿命に合わせて設定されています。また、リンクが表示されていない場合は、リンクのクリック可能性を明示的に待機します。あなたがタイマーとして暗黙の待ちを使用しようとしているなら、あなたは正しくそれをやっていません。要素が見つからず、時間間隔が過ぎるとエラーが出るまで待ちます。

代わりに新しい開いたウィンドウが閉じるのを待つためにカスタムの明示的な待機を使用します。

(new WebDriverWait(driver, 60)).until(new ExpectedCondition<Boolean>() { 
    public Boolean apply(WebDriver driver) { 
     return driver.getWindowHandles().size() == 1; 
    } 
}); 
関連する問題