xpath的不稳定性

xpath 是根据页面的dom来查找元素的。页面上有些内容是由于ajax 动态生成的。

针对自动化平台批量执行每次都会出现不稳定,所以动态等待每个元素加载成功。

Wait<WebDriver> waiter = new WebDriverWait(driver, 10);
WebElement element = waiter.until(new Function<WebDriver, WebElement>() {
        public WebElement apply(WebDriver driver) {
            return driver.findElement(By.xpath(""));
        }
    });
但是由于刚开始时,xpath的不规范,一个xpath对应多个element .所以以上方法并不能有效的解决元素的不稳定性。
则在加上判断当前的ajax 是否加载完成。仅针对使用ext开发的前台
Wait<WebDriver> waiter = new WebDriverWait(driver, 10);
WebElement element = waiter.until(new Function<WebDriver, WebElement>() {
        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

 
原文地址:https://www.cnblogs.com/Keep-Going-Space/p/5683920.html