0

    1114Selenium web自动化测试经验分享

    2023.04.26 | admin | 149次围观

    最开始学习web自动化测试就遇到一个小困扰,有时候设计的用例可能会打开新浪、腾讯这些网站,等待网页加载完成都要小半分钟。最近重拾web自动化测试,又遇到这个困扰。

    今天分享下:通过set_page_load_time()方法来设定时间,然后捕获timeout异常 并通过执行JS命令来停止页面加载 window.stop()

    一)set_page_load_timeout()

    下面是源码。

    可以看到 set_page_load_timeout() 设置网页超时加载时间 需要传入一个time_to_wait;

        def set_page_load_timeout(self, time_to_wait):
            """
            Set the amount of time to wait for a page load to complete
               before throwing an error.
            :Args:
             - time_to_wait: The amount of time to wait
            :Usage:
                driver.set_page_load_timeout(30)
            """
            try:
                self.execute(Command.SET_TIMEOUTS, {
                    'pageLoad': int(float(time_to_wait) * 1000)})
            except WebDriverException:
                self.execute(Command.SET_TIMEOUTS, {
                    'ms': float(time_to_wait) * 1000,
                    'type': 'page load'})
    

    在Web自动化脚本执行时测试网页打开时间,浏览器打开网址会一直等待整个页面加载完成,但有时候页面想要的元素早就加载完成了,但是因为个别js之类的东西特别慢测试网页打开时间,只能干等着。

    1114Selenium web自动化测试经验分享

    因为没有设置超时时间而且get方法默认是等待页面全部加载完成才会执行下一步 二)实战

        def test_59c(self):
            """set_page_load_timeout"""
            driver = webdriver.Chrome()
            driver.set_page_load_timeout(8)     # 可以自行设置加载时间
            print('0', time.ctime())
            try:
                driver.get("https://www.sina.com.cn/")      # 普通情况下,设置的 超时加载时间远远小于实际网页加载完成需要的时间,所以肯定会报错
            except:
                driver.execute_script('window.stop()')      # 执行Javascript来停止页面加载 window.stop()
                print('2', time.ctime())
            print('3', time.ctime())
            time.sleep(1)
            driver.quit()
    

    浏览器关闭前,等待一秒的时候,可以看到网页已经停止加载,浏览器标签栏那个小圈不再转。

        def wangzhi(self, net):
            from selenium.common.exceptions import TimeoutException
            self.driver = webdriver.Chrome()
            self.driver.maximize_window()
            self.driver.set_page_load_timeout(10)        # 设定时间
            try:
                self.driver.get(net)
            except TimeoutException:        # 捕获timeout异常
                self.driver.execute_script('window.stop()')     # 执行Javascript来停止页面加载 window.stop()
    

    可以把这一部分代码封装成方法,直接调用就可以。但是实际用处不是很大。只是一个小麻烦而已。

    交流技术 欢迎+QQ 153132336 zy

    版权声明

    本文仅代表作者观点。
    本文系作者授权发表,未经许可,不得转载。

    发表评论