webdriver的适用代码
1. 在5秒时间内找目标元素,找到就针对目标元素执行click
(new WebDriverWait(driver, 5)).until(new ExpectedCondition() {
public WebElement apply(WebDriver d) {
return d.findElement(By.cssSelector("#quick-links > ul > li.nav-tabs-item.mc-ql-tab-item-bm > a"));
}
}).click();
2. 等候页面上出现目标文本,对应IDE的waitForText, waitForElementPresent
//跟据定位类型和定位字符串定位页面元素 protected WebElement findElement(String locatorType, String locatorString) { if (locatorType.equals(this.CssLocator)) { return driver.findElement(By.cssSelector(locatorString)); } else if (locatorType.equals(this.IdLocator)) { return driver.findElement(By.id(locatorString)); } else if (locatorType.equals(this.XpathLocator)) { return driver.findElement(By.xpath(locatorString)); } else if (locatorType.equals(this.NameLocator)) { return driver.findElement(By.name(locatorString)); } else if (locatorType.equals(this.ClassNameLocator)) { return driver.findElement(By.className(locatorString)); } else if (locatorType.equals(this.TagNameLocator)) { return driver.findElement(By.tagName(locatorString)); } else if (locatorType.equals(this.LinkTextLocator)) { return driver.findElement(By.linkText(locatorString)); } else { return driver.findElement(By.partialLinkText(locatorString)); } } /** * Wait 60 seconds till text is present otherwise give timeout error, increase the waiting time if necessary * @param text * @param locatorType * @param locatorString */ protected void waitForText(String text, String locatorType, String locatorString){ for (int second = 0;; second++) { if (second >= 60) fail("timeout"); try { if (text.equals(findElement(locatorType, locatorString).getText())) break; } catch (Exception e) { logger.error("waitForText exception:"+e); } try{ Thread.sleep(1000); } catch (InterruptedException e) { logger.error("waitForText Thread.sleep exception:"+e); e.printStackTrace(); } } } |
执行完某步耗时操作之后,调用waitForText()直到出现目标文本(或者超时)再执行下步动作。