第一行是否让webdriver等待10秒?或者我需要两者兼而有之?
WebDriverWait wait = new WebDriverWait(firefoxDriver,10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(xpathID)));
我对驱动程序等待的语句感到困惑?这句话是否足够?
WebDriverWait wait = new WebDriverWait(firefoxDriver,10);
答案 0 :(得分:1)
WebDriverWait wait = new WebDriverWait(firefoxDriver,10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(xpathID)));
等待将忽略默认情况下遇到(抛出) NotFoundException 的实例,直到'条件,并立即传播所有其他人。
您可以通过调用忽略(添加例外)方法向忽略列表添加更多内容。
答案 1 :(得分:1)
到目前为止,我知道有三种不同的等待机制Selenium
。 Explicit
,Implicit
和Fluent
。见this。你提到的那个是Explicit
。显式等待意味着等待元素满足您告诉WebDriver
的特定条件。例如元素的可见性(你正在使用的那个),元素存在等。org.openqa.selenium.support.ui
中有一个名为ExpectedConditions
的类,它有很多成员来提供等待元素的不同机制。参见{ {3}}获取完整列表。
回到你的问题:
WebDriverWait wait = new WebDriverWait(firefoxDriver,10);
仅定义等待时间WebDriver
应等待以满足您提供的条件(在第二行。)
实际等待发生wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(xpathID)));
。
WebDriver
尝试在页面上找到与xpathID
匹配且元素可见的元素,并在10s
之后抛出异常。如果WebDriver
在10s
之前找到目标元素,则不会等待10s
并继续前进。