11.1 元素等待的处理

作者: 博客已迁移I米阳 | 来源:发表于2018-06-21 09:01 被阅读63次

UI自动化实践过程中,我们经常会遇到页面元素找不到的错误,而照成这种错误的很大原因就是我们脚本执行速度远远快于元素加载速度,也就是说元素还没有加载,而我们的脚本已经去执行操作该元素。那为了避免这个问题的发生,往往我们需要在脚本中加入等待操作,等待页面元素加载后脚本再继续往下执行。

等待元素加载通常有三种方式:

  1. 线程等待
  2. 全局等待(隐示等待)
  3. 显示等待

线程等待:

Thread.sleep(xxxx)

以往我们都用了这种方式去等待一个页面元素的加载,但这种方式我们在实际工作中是非常不建议使用。 原因是如果时间设置过长则脚本执行效率就降低,时间设置过短,万一网络等因素页面元素加载慢了,则会出现元素找不到的错误。


全局等待:

driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS)

全局等待设置于实例化WebDriver 之后,虽然很便利,但也不是太推荐,往往在一些异步加载的元素上即使页面元素已经出现也需要等待你设置的时间长度。

代码例子:

    WebDriver driver;

    @BeforeTest
    public void openBrowser() {
        System.setProperty("webdriver.chrome.driver", "./drivers/chromedriver.exe");
        driver = new ChromeDriver();
        // 设置全局等待时间为 30S
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    }

显示等待:

new WebDriverWait(driver, 30).until(ExpectedConditions.presenceOfElementLocated(By))

例子

测试用例

1. 打开UI测试界面
2. 点击wait按钮
3. 获取文本值,并打印

代码示例

    @Test
    public void waitTest() {
        driver.get("file:///D:/html/index.html");
        // 点击 wait 按钮
        driver.findElement(By.xpath("//*[@id=\"wait\"]/input")).click();
        // 定位 文本
        By el = By.xpath("//*[@id=\"display\"]/div");
        // 等待元素加载
        WebDriverWait wait = new WebDriverWait(driver, 30);
        wait.until(ExpectedConditions.presenceOfElementLocated(el));
        // 获取 文本值
        String text = driver.findElement(el).getText();
        System.out.println(text);
    }

实际过程我们都推荐使用显示等待,但如果每个 元素都这么写是不是觉得很麻烦?这里可以去思考下,如何让显示等待方式简单化。

如果文章对您有帮助,请赞赏支持!


欢迎关注个人公众号:


个人公众号

相关文章

  • 11.1 元素等待的处理

    UI自动化实践过程中,我们经常会遇到页面元素找不到的错误,而照成这种错误的很大原因就是我们脚本执行速度远远快于元素...

  • Selenium3自动化测试实战(2)

    1.设置元素等待 1.1显示等待 1.2隐式等待 2.定位一组元素 3.多窗口切换 4.警告框处理 5.下拉框处理...

  • 元素定位不到?

    1.元素定位方式写错了 2.元素没有加载完成,需要加等待处理 3.元素在iframe中,需要切换到iframe中 ...

  • 了解元素显式等待,掌握元素隐式等待【乐搏TestPro】

    设置元素等待 目标 1. 了解元素显式等待 2. 掌握元素隐式等待 1. 元素等待 1.1 什么是元素等待? 概念...

  • 元素等待

    1.设置元素等待可以更灵活的制定等待定位元素的时间,增强脚本的简装修,提高执行效率。 2.元素等待类型 1.强...

  • 元素等待

    dd=WebDriverWait(driver,3).until(lambda driver:driver.fin...

  • 元素等待

    元素等待,显示等待和隐式等待~ 显示等待:是针对某一个元素进行相关等待判定; 隐式等待:不针对某一个元素进行等待,...

  • 11.Appium基础--元素等待

    元素等待作用 设置元素等待,可以更加灵活的制定等待定位元素的时间,从而增强脚本的健壮性,提高执行效率。 元素等待类...

  • day07

    持有对象 11.1泛型和类型安全的容器 11.2基本概念 Collection.一个独立元素的序列,这些元素都服从...

  • 【MySQL必知必会】第11章:数据处理函数

    11.1 函数 大多数SQL支持以下几类型的函数: 文本处理函数 数值处理函数 日期处理函数 系统函数 11.2 ...

网友评论

本文标题:11.1 元素等待的处理

本文链接:https://www.haomeiwen.com/subject/xtihyxtx.html