0

私は開発に興味があり、QA/自動化テストは初めてです。次のコードを理解しようとしています。

public WebElement getVisibleElement( final By by, final WebElement parentElement, int timeoutValue, TimeUnit timeoutPeriod, int pollingInterval, TimeUnit pollingPeriod ) {
    return fluentWait(timeoutValue, timeoutPeriod, pollingInterval, pollingPeriod).until( new Function<WebDriver, WebElement>() {
        public WebElement apply(WebDriver driver) {
            try {
            } catch {
            }
            return null; 
        }
    });
}   

私の同じクラスでは、私も持っています。

public Wait<WebDriver> fluentWait(int timeoutValue, TimeUnit timeoutPeriod, int pollingInterval, TimeUnit pollingPeriod) {

    return new FluentWait<WebDriver>(this.webDriver)
                        .withTimeout(timeoutValue, timeoutPeriod)
                        .pollingEvery(pollingInterval, pollingPeriod)
                        .ignoring(NoSuchElementException.class);
}

特に私が理解したかった2つのこと。

  1. return fluentWait() は正確に何をしていますか?
  2. ここでの until() の使用はどういう意味ですか?
4

1 に答える 1

2

それらは互いに関連しているため、個別に回答することはしません。

Selenium のFluentWaitアプローチは、通常、特定の条件が true になるのを待つだけです。さまざまな可能な条件を与えることができ、それが真になるか、タイムアウト値が渡されるまで、どちらか早い方まで評価を続けます。

a) return、ほとんどのプログラミング言語では、メソッドから何かを返すだけです。

b)は、条件を物理的に評価するためにuntil呼び出すメソッドです。その前のすべては、ただFluentWaitセットアップするだけです。あなたの場合、メソッドの名前で(実際のメソッドは不完全です)、呼び出すことで、ユーザーに物理的に表示されるまでページから要素を取得しようとするように指示していると思います。.until(....)FluentWait.until(....)FluentWait

メソッドは使用するインスタンスをfluentWait設定するだけで、コード セクションは評価する条件を設定します。メソッドでは を返しているため、コード セクションでは、ユーザーに表示されることに満足したら、 を返す必要があります。FluentWaitapply/untilgetVisibleElementWebElementapplyWebElement

内でやりたいと思うのはapply、法線を使用して要素を見つけ、そのプロパティ.findElementを確認することです。visibletrue の場合はWebElement見つかったものを返し、そうでない場合は returnnullを強制的FluentWaitに続行させます。

したがってreturn fluentWait、単に「これが返すものは何でもFluentWait返す」と言っているだけです。メソッドはインスタンスを返すものとして既に宣言されてWebElementいるため、「これが返す WebElement をFluentWait返す」と言っているのです。

于 2013-10-16T13:35:22.313 に答える