xpath 是根据页面的dom来查找元素的。页面上有些内容是由于ajax 动态生成的。
针对自动化平台批量执行每次都会出现不稳定,所以动态等待每个元素加载成功。
Waitwaiter = new WebDriverWait(driver, 10);WebElement element = waiter.until(new Function () { public WebElement apply(WebDriver driver) { return driver.findElement(By.xpath("")); } }); 但是由于刚开始时,xpath的不规范,一个xpath对应多个element .所以以上方法并不能有效的解决元素的不稳定性。 则在加上判断当前的ajax 是否加载完成。仅针对使用ext开发的前台
Waitwaiter = new WebDriverWait(driver, 10);WebElement element = waiter.until(new Function () { public WebElement apply(WebDriver driver) { boolean isajax = (Boolean) ((JavascriptExecutor) driver).executeScript("return Ext.Ajax.isLoading()"); return (isajax==false); } }); 不同的开发前台检测ajax 的加载完成不一样。看具体的前台实现。可以在浏览器的控制台输入试下。 ext 是Ext.Ajax.isLoading() js 是window.jQuery.active