0

次の問題を理解するのを手伝ってください。お願いします。

すべてのリンクを取得して、後で確認する必要があります。次のコードを使用しました。

open(url);
List<String> links = new ArrayList<>();
for (SelenideElement link : $$("a"))
    links.add(link.attr("href"));

これらのAPIバージョンでLinuxでこれを使用したとき: Maven 3.1 Selenide v3.5 Selenium v​​2.53 Firefox v45.0.1 その後、コードはページからリンクをキャッチするのに十分な時間がかかりません。次に、リンクを取得する前にドライバー待機を追加する必要があります。以下を追加します (これは条件付き待機です)。

WebDriverWait waitLog = new WebDriverWait(WebDriverRunner.getWebDriver(), 20);
waitLog.until(ExpectedConditions.visibilityOf($(By.tagName(Selector))));

そして、それはうまくいき、私はそれを複数回実行しました。

昨日実行したときは驚きました。うまくいかず、リンクを取得するのに十分な時間がありません!

したがって、条件付き待機を暗黙的待機に置き換え、次を追加します。

WebDriverRunner.getWebDriver().manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);    

現在、正常に動作しています。

  • どうしたの?

  • このことは、時々機能し、時々機能しないのは何ですか?

  • コードを正常に機能させたまま、条件付き待機に戻るにはどうすればよいですか?

では、この問題を回復するにはどうすればよいでしょうか。今後この問題が発生しないようにします。

4

1 に答える 1

0

2 回目の URL の読み込みには多少の遅延が生じる場合があります。条件待ちの遅延時間を増やしてみてください。明示的待機と暗黙的待機の主な違いは次のとおりです。

WebDriver明示的または条件付きの待機は、言及された要素が使用可能になるまで、指定された時間だけ を停止します。暗黙的な待機はWebDriver、ページ上で見つからないすべての要素に対して、指定された時間の実行をスキップします。

お役に立てれば。

于 2016-05-07T09:29:06.610 に答える