前提・実現したいこと
SeleniumのWebDraiverを使用し、ブラウザ操作の自動化を行っているのですが、
ページにアクセスし、特定の要素が表示された時点で、読み込みを待たず次の処理に進む方法が分かりません。
調べたところ、WebDriverWaitクラスとExpectedConditionsクラスを使えば要素が表示されるまで待機することが分かったので下記コードで実行を行いましたが、要素が表示されてからもページ全体の読み込みを待っているように見えます。
(要素は表示されており手動でクリックできる状態ですが、ブラウザの左下にキャッシュ待機中…などが表示され読み込みが完全に終わるのを待っている状態)
該当のソースコード
WebDriverWait
1//ページにアクセスする 2driver.get("https://"); 3//submitBtnの要素が表示されるまで最大10秒待機 4Wait<WebDriver> wait = new WebDriverWait(driver, 10); 5wait.until(visibilityOfElementLocated(By.className("submitBtn"))); 6//submitBtnをクリック 7WebElement element = driver.findElement(By.className("submitBtn")); 8element.click();
ExpectedConditions
1//ページにアクセスする 2driver.get("https://"); 3 4ExpectedCondition<WebElement> waitCondition = new ExpectedCondition<WebElement>() { 5 public WebElement apply(WebDriver driver) { 6 return driver.findElement(By.className("submitBtn")); 7 } 8 }); 9//submitBtnをクリック 10WebElement element = driver.findElement(By.className("submitBtn")); 11element.click(); 12 13wait.until(waitCondition);
上記で実行すると要素が表示されてからもページの読み込みが続行してしまうので手動でボタンを押した方が早くなってしまう状態です。
まとめると、ページ読み込み中でもボタンがあればクリックするという処理にしたいです。
勉強不足で非同期処理などあまり詳しくは分からないのですが関係があるのでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/31 10:01
2019/11/06 02:32 編集
2019/11/06 14:59
2019/11/07 05:34
2019/11/07 17:19
2019/11/08 05:30
2019/11/08 05:34
2019/11/08 06:59
2019/11/08 12:31
2019/11/11 08:50
2019/11/12 12:29
2019/11/15 04:54