次の問題を理解するのを手伝ってください。お願いします。
すべてのリンクを取得して、後で確認する必要があります。次のコードを使用しました。
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 v2.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);
現在、正常に動作しています。
どうしたの?
このことは、時々機能し、時々機能しないのは何ですか?
コードを正常に機能させたまま、条件付き待機に戻るにはどうすればよいですか?
では、この問題を回復するにはどうすればよいでしょうか。今後この問題が発生しないようにします。