环境: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()却把两个窗口都关了【已解决】的更多相关文章

  1. selenium学习笔记——driver.get(url) 页面加载时间太长

    # 两个同时设置才行 # 实现效果:加载状态停止,进行代码下一步操作 driver.set_page_load_timeout(10) driver.set_script_timeout(10) # ...

  2. py+selenium+IE 批量执行脚本10几分钟,IE会卡住【无解,提供绕过方法】

    问题:py+selenium+IE 批量执行单个脚本10几分钟,IE会卡住 一个脚本文件里有20几个用例,跑起来10多分钟,每次跑10分钟后(即第22条用例左右时)IE就会卡住,程序就会在那傻等,最后 ...

  3. python+selenium 批量执行时出现随机报错问题【已解决】

    出现场景:用discover方法批量执行py文件,出现随机性的报错(有时a.py报错,有时b.py报错...),共同特点:均是打开新窗口后,切换最新窗口,但定位不到新窗口的元素,超时报错.由于个人项目 ...

  4. Selenium常用API的使用java语言之14-多窗口切换

    在页面操作过程中有时候点击某个链接会弹出新的窗口, 这时就需要主机切换到新打开的窗口上进行操作.WebDriver提供了switchTo().window()方法可以实现在不同的窗口之间切换. 以百度 ...

  5. py+selenium一个可被调用的登录测试脚本【待优化】

    大部分系统现在都有登录页面,本文主要尝试写一个登录的测试脚本,及另一个脚本调用它登录测试已登录的页面模块. 目标: 登录脚本:从excel里获取登录的测试数据(包括异常测试)→执行登录脚本→输出是否通 ...

  6. selenium 不同版本Driver

    selenium进行UI自动化测试需要Driver支持,不同的浏览器需要不同的Driver,之前使用的Driver可以正常运行,但是总会报一些莫名的问题,经过查找,原来IE的Driver需要与sele ...

  7. selenium java-2 chrome driver与对应版本

    chrome driver下载地址:https://npm.taobao.org/mirrors/chromedriver driver与chrome的对应关系: 1.进入最新的driver,查看no ...

  8. [Selenium] 使用Chrome Driver 的示例

    //导入Selenium 库和 ChromeDriver 库 pachage com.learningselenium.simplewebdriver; import java.util.concur ...

  9. [Selenium] 使用Firefox Driver 示例

    //导入Selenium 库和FirefoxDriver 库 package com.learningselenium.simplewebdriver; import org.openqa.selen ...

随机推荐

  1. 解决C++项目使用sqlite中文乱码问题

    我参考的是这篇文章:https://www.2cto.com/database/201411/354891.html 理论是:sqlite使用的是UTF-8,C++中用的字符串是ascii或unico ...

  2. 【JS 笔记】比较操作符之大小与记录

    1,字符串比较 字符串比较则是使用基于标准字典的 Unicode 值来进行比较的. 对于两个拥有相同字符顺序,相同长度,并且每个字符的位置都匹配的字符串,应该使用严格比较运算符. 下例的比较中可能因为 ...

  3. Windows+Idea安装Hadoop开发环境

    前言:这种问题,本来不应该写篇博客的,但是实在是折磨我太久了,现在终于修好了,必须记一下,否则对不起自己的时间,对自己的博客道歉 *** 简介 环境:Windows 10+JDK1.8+Intelli ...

  4. Rainyday.js – Rendering Raindrops with JavaScript

    Posted · Category:GPL License,Tools 直击现场 The idea behind Rainyday.js is to create a JavaScript libra ...

  5. FMX中实现PostMessage的方法

    首先,做为一个从Windows下转过来的开发人员,许多时候,我们喜欢用PostMessage来触发一些异步执行的代码,但遗憾的是,FMX做为EMB的跨平台库的基础,只提供了SendMessage方法, ...

  6. QT中的SOCKET编程

    转自:http://mylovejsj.blog.163.com/blog/static/38673975200892010842865/ QT中的SOCKET编程 2008-10-07 23:13 ...

  7. Spring之bean生命始末

    可以为Bean定制初始化后的生命行为,也可以为Bean定制销毁前的生命行为.举例:ba06包.首先,这些方法需要在Bean类中事先定义好:是方法名随意的public void方法. 其次,在配置文件的 ...

  8. 【过时】update progress has encountered a problem解决办法

    笔者第二次整理博客,已经抛弃MyEclipse了,我将公司项目转换成了idea的目录结构后大家都改换Idea进行开发,虽然我个人比较喜欢eclipse的简洁干净,但是Idea的确有很多方便开发的新功能 ...

  9. 跟我学SpringCloud | 第五篇:熔断监控Hystrix Dashboard和Turbine

    SpringCloud系列教程 | 第五篇:熔断监控Hystrix Dashboard和Turbine Springboot: 2.1.6.RELEASE SpringCloud: Greenwich ...

  10. GO代码生成代码小思小试

    推进需求 GO 项目,可整体生成一个运行文件到处跑,是极爽之事.但如果有资源文件要得带着跑,则破坏了这种体验. 例如下边这个项目结构,resource 目录下为资源文件,main.go 中会通过路径引 ...