本文共 1157 字,大约阅读时间需要 3 分钟。
视频资源:
社区资源:
方法一:结合使用WebDriverWait,ExpectedConditions完成,注意,经过我反复测试才发现,这个方法目的是检查某个元素的innerText是否在指定时间范围内出现,我通过修改locator为不存在的情况下,同样会等待30s
WebDriverWait wait = new WebDriverWait(driver,5);//设置等待时间为5s,5s后如还没有出现则抛出异常
if(wait.until( ExpectedConditions.textToBePresentInElement( By.cssSelector("a[mon='ct=1&a=1&c=top&pn=0']"), "hello" //hello为此元素的innerText ) )){ driver.findElement(By.linkText("总政治部副主任吴昌德等6人晋升上将")).click();}
方法二:结合使用WebDriverWait,ExpectedConditions完成自定义的预期条件,此方法可以定义等待指定元素的超时时间,此方法比较灵活,可以自己定义出自己任何预期的等待条件,以下是我测试过的两个小case
case1:
WebDriverWait wait = new WebDriverWait(driver,5); WebElement element = wait.until(new ExpectedCondition<WebElement>(){ @Override //覆写apply方法 public WebElement apply(WebDriver driver) { WebElement element = driver.findElement(By.linkText("总政治部副主任吴昌德等6人晋升上将将")); return element; } }); element.click();
case2:
WebDriverWait wait = new WebDriverWait(driver,5); boolean flag = wait.until(new ExpectedCondition<Boolean>(){ @Override public Boolean apply(WebDriver driver) { Boolean flag = driver.findElement(By.id("userName")).getAttribute("readonly").contains("true"); return flag; } }); element.sendkeys("username");
转载地址:http://ljrub.baihongyu.com/