2015-02-23 61 views
0

仅第一行是否让webdriver等待10秒?还是我需要兼得?如何让webdriver等待,并做了什么声明?

WebDriverWait wait = new WebDriverWait(firefoxDriver,10); 
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(xpathID))); 

我很困惑什么语句让驱动程序等待?这句话足够吗?

WebDriverWait wait = new WebDriverWait(firefoxDriver,10); 

回答

1

有三种不同的等待机制Selenium提供了迄今为止我知道的。 ExplicitImplicitFluent。请参阅this。你提到的那个是Explicit。显式等待意味着等待元素满足您告诉WebDriver的某些条件。如元素的可见性(正在使用的元素),元素的存在等。有一个org.openqa.selenium.support.ui中的类名为ExpectedConditions,它有很多成员提供用于等待元素的不同机制。有关完整列表,请参阅here

再回到你的问题: WebDriverWait wait = new WebDriverWait(firefoxDriver,10);只定义了等待和长度WebDriver应该迫不及待地想见到你所提供条件 实际的等待发生wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(xpathID)));(在第二行)。 WebDriver试图找到与xpathID相匹配的元素,它在页面上可见,在10s之后它会抛出异常。如果WebDriver10s之前找到目标元素,它将不会等待10s并向前移动。

+1

对我的问题的最好解释! – ERJAN 2015-02-24 08:16:06

+0

@ERJAN欣赏好话 – Saifur 2015-02-24 12:50:41

1
WebDriverWait wait = new WebDriverWait(firefoxDriver,10); 
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(xpathID))); 

等待会忽略默认NotFoundException所遇到的(抛出)的情况​​下,在“直到”条件,并立即传播所有其他人。

您可以通过调用忽略(添加例外)方法将更多内容添加到忽略列表中。