py+selenium IE 用driver.close()却把两个窗口都关了【已解决】
环境:py3 selenium unittest
测试浏览器:IE10
目标:在单个文件中,有多个用例,执行完A用例,由于打开了新的窗口,必须关闭新的窗口,才不会影响下一条用例的执行。
问题:按例子1的代码,运行test001_a后,直接把两个窗口全部关闭,导致test002_b无法运行报错(以下只是例子,不一定会失败,实际运行系统时由于性能,网络等原因肯可能会失败)。
例子1:
# coding:utf-8
import unittest
from selenium import webdriver class Testabc(unittest.TestCase):
@classmethod
def setUpClass(cls):
# 打开IE浏览器
cls.driver = webdriver.Ie()
# 最大化浏器
cls.driver.maximize_window() @classmethod
def tearDownClass(cls):
cls.driver.quit() def test001_a(self):
print(1)
# 打开新的窗口
self.driver.execute_script('window.open("https://www.sogou.com");')
self.driver.switch_to.window(self.driver.window_handles[-1]) # 切换到当前最新打开的窗口
self.driver.close() # 关闭当前窗口
self.driver.switch_to.window(self.driver.window_handles[-1]) #切换到当前最新打开的窗口 def test002_b(self):
print(2) if __name__ == "__main__": suite = unittest.TestLoader().loadTestsFromTestCase(Testabc)
unittest.TextTestRunner(verbosity=2).run(suite)
若出现窗口全部被关闭,test002_b未执行,报错
则原因应该是,line22-24,由于代码运行速度较快,执行关闭后,窗口并未马上关闭,但已经执行了下一句,又切换到那个关闭的窗口,而运行第二条用例时,找不到第一个窗口的元素,因为没有切换到这个窗口!!
所以解决方案:
1,加入等待时间
2、如果只有两个窗口,直接关闭窗口后切换到第一个窗口
如图:

引申:
如果测试有经常打开窗口的,可以将这个放到teardown()里,每次执行完毕后,关闭当前窗口,再切换第一个窗口。

问:那我有些用例只有一个窗口在跑怎么办?


答:做一个句柄判断。

其他情况就自己再造化了~~
如有错误,请及时指出,谢谢!
py+selenium IE 用driver.close()却把两个窗口都关了【已解决】的更多相关文章
- selenium学习笔记——driver.get(url) 页面加载时间太长
# 两个同时设置才行 # 实现效果:加载状态停止,进行代码下一步操作 driver.set_page_load_timeout(10) driver.set_script_timeout(10) # ...
- py+selenium+IE 批量执行脚本10几分钟,IE会卡住【无解,提供绕过方法】
问题:py+selenium+IE 批量执行单个脚本10几分钟,IE会卡住 一个脚本文件里有20几个用例,跑起来10多分钟,每次跑10分钟后(即第22条用例左右时)IE就会卡住,程序就会在那傻等,最后 ...
- python+selenium 批量执行时出现随机报错问题【已解决】
出现场景:用discover方法批量执行py文件,出现随机性的报错(有时a.py报错,有时b.py报错...),共同特点:均是打开新窗口后,切换最新窗口,但定位不到新窗口的元素,超时报错.由于个人项目 ...
- Selenium常用API的使用java语言之14-多窗口切换
在页面操作过程中有时候点击某个链接会弹出新的窗口, 这时就需要主机切换到新打开的窗口上进行操作.WebDriver提供了switchTo().window()方法可以实现在不同的窗口之间切换. 以百度 ...
- py+selenium一个可被调用的登录测试脚本【待优化】
大部分系统现在都有登录页面,本文主要尝试写一个登录的测试脚本,及另一个脚本调用它登录测试已登录的页面模块. 目标: 登录脚本:从excel里获取登录的测试数据(包括异常测试)→执行登录脚本→输出是否通 ...
- selenium 不同版本Driver
selenium进行UI自动化测试需要Driver支持,不同的浏览器需要不同的Driver,之前使用的Driver可以正常运行,但是总会报一些莫名的问题,经过查找,原来IE的Driver需要与sele ...
- selenium java-2 chrome driver与对应版本
chrome driver下载地址:https://npm.taobao.org/mirrors/chromedriver driver与chrome的对应关系: 1.进入最新的driver,查看no ...
- [Selenium] 使用Chrome Driver 的示例
//导入Selenium 库和 ChromeDriver 库 pachage com.learningselenium.simplewebdriver; import java.util.concur ...
- [Selenium] 使用Firefox Driver 示例
//导入Selenium 库和FirefoxDriver 库 package com.learningselenium.simplewebdriver; import org.openqa.selen ...
随机推荐
- Docker镜像与容器命令 专题
https://yeasy.gitbooks.io/docker_practice/content/install/mirror.html docker的工作流程图: 至少需要配备三样东西去使用doc ...
- 管道通信实例(A程序作为服务器,不断从B程序接收数据,并发送到C程序中)
A程序作为服务器,不断从B程序接收数据,并发送到C程序中:#include <stdio.h>#include <conio.h> #include <tchar.h&g ...
- Windows环境下使用Node.js
作者:短工邦技术部 - 陈文哲 Parse用的就是Node.js,所以我们要先了解什么是Node.js,以及做一些简单的操作. Node.js 的主要思路是:使用非阻塞的,事件驱动的 I/O 操作来保 ...
- 使用PyQt5编写一个简单的GUI程序(pyside 有 pyside-uic 把ui文件转成py文件,pyside-rcc 把qrc文件转成 py文件导入就行了)
我做Python窗口界面编程时,经常使用PyQt进行设计.这里简单叙述一下使用PyQt5制作一个简单的图形界面的流程 PyQt的简介以及开发环境的搭建在此不多赘述. 1. 打开Qt Des ...
- 利用批处理自动创建schtasks系统任务
通过批处理自动创建schtasks系统任务,把下列代码保存成bat文件,放到要执行的文件的同级目录即可. @echo on set curpath=%cd%c:cd %systemroot%schta ...
- VC++的Unicode编程
本文来自:http://tech.ddvip.com/2007-03/117395585321221.html 一.什么是Unicode 先从ASCII说起,ASCII是用来表示英文字符的一种编码规范 ...
- win2003浏览器提示是否需要将当前访问的网站添加到自己信任的站点中去
Win2003的操作系统,的确比其它操作系统在安全上增加了不少,这是为用户所考虑的.当然,既然提供了安全性,尤其是在上网的时候,可以禁止某些活动脚本的显示,这样,就可以多方面的避免在使用Win2003 ...
- 这里有123个黑客必备的Python工具!
123个Python渗透测试工具,当然不仅于渗透~ 如果你想参与漏洞研究.逆向工程和渗透,我建议你时候用Python语言.Python已经有很多完善可用的库,我将在这里把他们列出来. 这个清单里的工具 ...
- pytorch实现yolov3(1) yolov3基本原理
理解一个算法最好的就是实现它,对深度学习也一样,准备跟着https://blog.paperspace.com/how-to-implement-a-yolo-object-detector-in-p ...
- Zookeeper详解-安装(四)
ZooKeeper服务器是用Java创建的,它在JVM上运行.你需要使用JDK 6或更高版本. 步骤1:验证Java安装 相信你已经在系统上安装了Java环境.现在只需使用以下命令验证它. $ jav ...