UI自动化测试:异常标签页切换
2021-08-30 17:21
465 查看
一、前言
在进行web自动化测试或者App端webview自动化测试时,都会遇到切换标签页的场景,通常情况下使用WebDriverWait里面的一个方法,去等待一个新的标签页打开,然后切换至新的标签页。当有时出现异常,同时打开两个标签页的时候就不能使用WebDriverWait里面的等待方法。
二、方式实现
1、通常解决标签页切换的方法是:
def switch_to_new_window(self, locator, timeout=30, poll_frequency=0.5): # 获取所有的窗口句柄 handles = self.driver.window_handles # 点击元素,打开新标签页 self.driver.find_element(*locator).click() # 等待新的标签页生成 WebDriverWait(self.driver, timeout, poll_frequency=poll_frequency).until(EC.new_window_is_opened(handles)) # 切换至新打开的标签页 self.driver.switch_to.window(self.driver.window_handles[-1])
2、遇到的问题:
- 点击某个元素后,先后生成两个标签页;
- 生成的两个标签页中,其中一个是空白页,无任何内容;
- 空白页有时生成快,有时慢,有时生成后还消失;
使用WebDriverWait里面的等待方法时,有时会切换至空白页面,而且有时切换至空白页后该页面消失了。面对这种异常情况,只能根据异常现象重新去封装一个切换方法。
def switch_to_new_window_wait(self, locator, timeout=30, frequcy=0.5): # 获取所有的窗口句柄 handles = self.driver.window_handles # 点击元素,打开新标签页 self.driver.find_element(*locator).click() used_time = 0 while used_time < timeout: # 点击元素后获取所有的窗口句柄 old_handles = self.driver.window_handles time.sleep(frequcy) # 等待之后再次获取所有的窗口句柄 new_handles = self.driver.window_handles # 比较等待前后窗口句柄是否相等 if old_handles == new_handles: # 判断是否有新的标签页生成 if handles[-1] != new_handles[-1]: try: self.driver.switch_to.window(new_handles[-1]) # 判断是否进入了空白页 if self.driver.current_url is None: print("\n" + "进入了空白页") used_time += frequcy continue my_log.info("切换至新标签页成功") return except: # 空白页消失报错,等待一定的时间 used_time += frequcy continue used_time += frequcy my_log.error("切换至新标签页失败!")
上面的方法可以解决我遇到的标签页切换问题。
相关文章推荐
- 简单实现tab标签页切换
- 解决浏览器窗口切换后定时器执行异常的问题
- jQuery Validate验证隐藏于不验证问题(常用于多标签页切换)
- 关于决解EasyUI中Tabs标签页下使用百度地图API异常
- 我用iret进行任务切换时,系统出现异常,来帮我看看是什么问题
- Android ViewPager的初始化及遇到的切换异常,界面异常拉伸
- 详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli)
- ARM 中断状态和SVC状态的堆栈切换 (异常)
- Android之ActionBar、Tabs、Fragment、ViewPager实现标签页切换并缓存页面
- 关于Myeclipse切换工作空间后磁盘占用异常的解决办法(仅供参考)。
- 使用多种数据 切换 ,共用一个listView必须注意的三个异常
- selenium 标签页切换
- 滑动导航栏,标签页切换
- jdk版本 tomcat版本切换导致的异常解决办法
- Node.js开发——解决Cesium视角切换的异常
- Vue2.0 给Tab标签页和页面切换过渡添加样式的方法
- selenium获取新页面标签页(只弹出一个新页面的切换)
- python selenium 对浏览器标签页进行关闭和切换的方法
- iOS中左右滑动切换,滑动标签页导航的设计思路
- IOS5下 UITabBarController切换时异常问题