Selenium webdriver 指定時間分処理を待たせるJava

Java

Selenium webdriver 指定時間分処理を待たせる [Java]

以前社内で「webdriverは逐次sleepしなきゃいけないからいまいち」と言われたんですが、別に逐次sleepしても良いと思うけどなーと思いつつ、設定値を与えてある程度待たせる方法もあるのでSelenium webdriver Javaで適宜行える方法の記載です。

WebDriverWaitを利用すれば要素出現までの最大秒数まで待機させておくことが可能なので、これを利用してアイテム毎に待機メソッド作成しておくだけです。

WebDriverWaitの第二引数は秒数。

public staticvoid waitNameText(WebDriver driver, String element, String textData) {
 
        // Waitオブジェクト作成
        Wait<WebDriver> wait = new WebDriverWait(driver, 10);
 
        // 待機条件を実装
        ExpectedCondition<Boolean> waitCondition = new ExpectedCondition<Boolean>() {
            public Boolean apply(WebDriver driver) {
                driver.findElement(By.name(element)).sendKeys(textData);
                return true;
            }
        };
 
        // 条件を満たすまで待つ
        wait.until(waitCondition);
 
}

 

公式ドキュメントを読めば大体のことは分かると思います。

https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/support/ui/WebDriverWait.html

ついでにクリックする対象を画面内に収める方法。

WebElement element = driver.findElement(By.linkText(text));
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);",element);
JavascriptExecutor jse = (JavascriptExecutor) driver;
jse.executeScript("javascript:window.scrollBy(0,-100)");
try {
  Thread.sleep(m);
} catch (InterruptedException e) {
  System.out.println(e);
}
  • この記事を書いた人

朝倉卍丸

シングルモルトスコッチなどのお土産を持ってきた人を助けるのが好きです。サービスの分割が重要ですが、まあ昔ながらの方法でやりたいこともありますよね。

よく読まれている記事

条件の0=0は全てが正であるを意味するSQL 1

SQLの条件に0=0のような記述を見かけます。 変わった書き方の条件ですが、これは「全てが正である」事を意味しており、結合条件の場合はCROSS JOINと同じです。 下記の例で言えば、結合するsub ...

DISTINCTを使わないで重複排除を考えるSQL 2

SQLのDISTINCTはEXISTSとかGROUP BYでなんとかする事もできます。 DISTINCTは暗黙的なソートがされますが、何のDBを使うにせよ過去のバージョンならともかく、最近のバージョン ...

RFC 5322に準拠させた正規表現言語別 3

RFC5322で定義されている正規表現を、各言語の正規表現に変化させた形になります。 完全な電子メール正規表現は存在しないので、結局のところ何かの公式基準に従っていたとしても、自分が携わるサービスのル ...

-Java