WebDriver APIは、のfindElements
存在または非存在を確認するために使用すると述べていますWebElement
。このメソッドは、暗黙のタイムアウト値に従います。したがって、存在をチェックするメソッドを書きたいが、メソッドが暗黙のタイムアウトを待たないようにしたい場合は、次のように一時的に抑制することができます。
protected boolean doesElementExist(By by) {
// Temporarily set the implicit timeout to zero
driver.manage().timeouts().implicitlyWait(0, TimeUnit.MILLISECONDS);
// Check to see if there are any elements in the found list
boolean exists = driver.findElements(by).size() > 0;
// Return to the original implicit timeout value
driver.manage().timeouts()
.implicitlyWait(Properties.TIMEOUT_TEST, TimeUnit.SECONDS);
return exists;
}
WebDriver
ただし、これにはタイムアウト値を管理する必要があります。By
現在、上記のようなメソッドをcalledのカスタム サブクラスに移動Locator
して、ドライバーまたは特定の からこれらのメソッドを呼び出すことができるようにしていWebElement
ますLocator
。
問題は、私のLocator
クラス内に がなく、WebDriver
があることSearchContext
です。findElements
のコンテキスト内から、タイムアウトを変更する方法、またはカスタムタイムアウトなどを呼び出す方法があるはずだと思いますWebElement
。そのような方法はありますか?WebDriver
または、カスタムおよびWebElement
実装 (これらの新しいメソッドを利用できるようにするために拡張されています)でこれらのメソッドの実装でタイムアウト値を抑制する必要がありますか? ありがとう!