了解流利的Selenium等

时间:2013-10-16 11:48:20

标签: java selenium automated-tests selenium-webdriver fluent

我从事开发和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);
}

特别是我想要理解的两件事;

  1. 返回fluentWait()究竟做什么?
  2. 在这里使用until()是什么意思?

1 个答案:

答案 0 :(得分:2)

他们联系在一起,所以我不会单独回答:

Selenium的FluentWait方法通常只是等待某个条件成立。您可以为它提供许多不同的可能条件,它将继续对其进行评估,直到它为真或超时值为止,以先到者为准。

a)return,在大多数编程语言中只是从方法中返回某些

b)until是您在FluentWait上调用的方法,可以让它物理评估条件。之前的一切,只是设置它,使用.until(....)告诉FluentWait实例去评估我给你的代码。在你的情况下,我假设方法的名称(实际方法是不完整的),通过调用.until(....),你告诉FluentWait继续尝试从页面抓取一个元素,直到它在物理上可见给用户。

fluentWait方法仅设置要使用的FluentWait个实例,而apply/until代码部分则设置您要评估的条件。在getVisibleElement方法中,您要返回WebElement,因此在apply代码部分中,一旦您对用户可见,您需要返回WebElement

我认为你想在apply内做什么,是使用普通.findElement找到元素并检查它的visible属性。如果是,请返回找到的WebElement,否则返回null以强制FluentWait继续前进。

因此,return fluentWait仅仅是在说“返回FluentWait返回的任何内容”。其中,由于该方法已被声明为返回WebElement实例,因此您说“返回此FluentWait返回的任何WebElement”。