课程中的代码中多次使用了休眠0.01秒,这样极短的等待时间是否有意义?

来源:9-4 等待页面完全加载完成的封装:页面什么时候才算加载完成?

爱琳妹妹

2022-08-05

0.1秒可能还好,但0.01秒0.03秒是否有实际意义呢?

        for x in range(int(timeout * 10)):
            try:
                # 获取页面的状态
                ready_state = driver.execute_script("return document.readyState")
            except WebDriverException:
                # 如果有driver的错误,执行js会失败,就直接跳过
                time.sleep(0.03)
                return True
            # 如果页面元素全部加载完成,返回True
            if ready_state == 'complete':
                time.sleep(0.01)
                return True
            else:
                now_ms = time.time() * 1000
                # 如果超时了就break
                if now_ms >= stop_ms:
                    break
                time.sleep(0.1)
写回答

1回答

william

2022-08-05

这个问题特别好。最直接的就是在多个并发的情况下减少cpu的负载。chrome浏览器特别占内存和cpu,如果使用pytest-xdist同时并发跑多个用例,比如cpu是10核,我们跑用例的时候直接上10个并发,那服务器资源就会很快占满,这样浏览器特别容易崩溃,导致用例失败。所以适当的sleep一点点,哪怕0.01秒也是对资源的合理处理。
2
1
爱琳妹妹
非常感谢!
2022-08-05
共1条回复

Selenium3+Pytest+Allure 全流程实战自动化测试

应用主流测试工具,从功能测试转型自动化测试

636 学习 · 227 问题

查看课程