類似しているが同一ではないいくつかのページをすばやく移動するアプリケーションで FirefoxDriver を使用しています。実行を高速化するために (FF を使用する必要があります)、webdriver.load.strategy プロパティを「unstable」に設定しました。これは確かにページを完全に読み込まないことでスピードアップしますが、非常に奇妙なエラーが見つかりました.
ページのリストとそのデータを含むファイルを調べたところ、一部のページが間違ったデータと一致していることがわかりました。デバッグすると、ステップ実行中はすべて正常に動作しましたが、プログラムを数ページでも実行させるとすぐに、間違ったページからデータを取得し始めました。(明確にするために、たとえば、 の後に を実行しdriver.get(www.google.com)
、driver.get(www.stackoverflow.com)
次にdriver.findElements()
StackOverflow のページ タイトルを取得するために実行すると、「Google」が返されます。)
実行中のブラウザをよく見ると、URL ボックスの URL と実際に表示されているページが一致していないように見えました。URL は、ページよりもはるかに速く変化していました。ページが完全に読み込まれるまでドライバーが待機していないため、findElements を呼び出す前に、同じクラス名を持つ前のページから要素を取得していると思われます。
これは、webdriver.load.strategy 'stable' が何をすべきかを考えるとある程度理にかなっていますが、ページの要素に Wait を設定しましたが、待機していないようです。すべてのページに同じ要素が含まれているため、要素が既に表示されている可能性がありますか? すべてのページの設定が同じであるため、他のことを待つことはできません。異なるのは個々のテキストだけであり、それがどうなるかは事前にわかりません.
誰かがこの問題に遭遇しましたか? 問題の原因についての私の推測は正しいですか? 不安定なロード戦略を削除する以外にできることはありますか?
ありがとう、bsg EDIT webdriver.load.strategy 'stable' が設定されていない場合、コードは完全に機能しますが、いくつかのコードを追加しています。
for(String url : urllist)
{
driver.get(url);
WebElement header = (new WebDriverWait(driver, 10).until(ExpectedConditions.presenceOfElementLocated(By.tagName("h1")));
elements = driver.findElements(By.className(elementclassname));
}
各ページに、h1 と、class=elementclassname を持ついくつかの要素があることに注意してください。