赞
踩
最开始学习web自动化测试就遇到一个小困扰,有时候设计的用例可能会打开新浪、腾讯这些网站,等待网页加载完成都要小半分钟。最近重拾web自动化测试,又遇到这个困扰。
个人博客:https://blog.csdn.net/zyooooxie
今天分享下:通过set_page_load_time()方法来设定时间,然后捕获timeout异常 并通过执行JS命令来停止页面加载 window.stop()
下面是源码。
可以看到 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之类的东西特别慢,只能干等着。
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
个人博客 https://blog.csdn.net/zyooooxie
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。