Scenarion:点击New按钮后,它将被禁用,然后需要在字段名称文本字段中输入数据。它适用于Mozilla,但不适用于IE。
IE版-8 IEDriver -IEDriverServer_x64_2.44.0
答案 0 :(得分:0)
尝试使用替代CSS selector方法,因为:
有关效果比较的更多详情,请访问here
开始对webElements进行任何操作后,最好等到整个页面呈现。以下是一些可以帮助您的技巧:
1)waitForPageLoad()
方法:
public void waitForPageLoad(WebDriver driver_) {
Wait<WebDriver> wait = new WebDriverWait(driver_, 30);
wait.until(new Function<WebDriver, Boolean>() {
public Boolean apply(WebDriver driver) {
return String
.valueOf(((JavascriptExecutor) driver).executeScript("return document.readyState"))
.equals("complete");
}
});
}
2)fluentWait方法 - 可以动态配置其超时和轮询间隔的Wait接口的实现。
public WebElement fluentWait(WebDriver driver, final By locator) {
Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
.withTimeout(30, TimeUnit.SECONDS)
// .pollingEvery(5, TimeUnit.SECONDS)
.pollingEvery(1, TimeUnit.SECONDS)
// .ignoring(NoSuchElementException.class);
.ignoring(org.openqa.selenium.NoSuchElementException.class);
WebElement foo = wait.until(
new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver driver) {
return driver.findElement(locator);
}
}
);
return foo;
}
添加这些方法后,您可以使用以下调用:
// css selector of the input field:
String cssSelectorInput="blablabla"
waitForPageLoad(driver);
WebElement input= fluentWait(driver, By.cssSelector(cssSelectorInput));
input.sendKeys("test name");
..... etc
希望这会对你有所帮助。