• py+selenium IE 用driver.close()却把两个窗口都关了【已解决】


    环境:py3  selenium  unittest  

    测试浏览器:IE10

    目标:在单个文件中,有多个用例,执行完A用例,由于打开了新的窗口,必须关闭新的窗口,才不会影响下一条用例的执行。

    问题:按例子1的代码,运行test001_a后,直接把两个窗口全部关闭,导致test002_b无法运行报错(以下只是例子,不一定会失败,实际运行系统时由于性能,网络等原因肯可能会失败)。

    例子1:

     1 # coding:utf-8
     2 import unittest
     3 from selenium import webdriver
     4 
     5 
     6 class Testabc(unittest.TestCase):
     7     @classmethod
     8     def setUpClass(cls):
     9         # 打开IE浏览器
    10         cls.driver = webdriver.Ie()
    11         # 最大化浏器
    12         cls.driver.maximize_window()
    13 
    14     @classmethod
    15     def tearDownClass(cls):
    16         cls.driver.quit()
    17 
    18     def test001_a(self):
    19         print(1)
    20         # 打开新的窗口
    21         self.driver.execute_script('window.open("https://www.sogou.com");')
    22         self.driver.switch_to.window(self.driver.window_handles[-1])  # 切换到当前最新打开的窗口
    23         self.driver.close()  # 关闭当前窗口
    24         self.driver.switch_to.window(self.driver.window_handles[-1])  #切换到当前最新打开的窗口
    25 
    26     def test002_b(self):
    27         print(2)
    28 
    29 
    30 if __name__ == "__main__":
    31 
    32     suite = unittest.TestLoader().loadTestsFromTestCase(Testabc)
    33     unittest.TextTestRunner(verbosity=2).run(suite)

    若出现窗口全部被关闭,test002_b未执行,报错

    则原因应该是,line22-24,由于代码运行速度较快,执行关闭后,窗口并未马上关闭,但已经执行了下一句,又切换到那个关闭的窗口,而运行第二条用例时,找不到第一个窗口的元素,因为没有切换到这个窗口!!

    所以解决方案:

    1,加入等待时间

    2、如果只有两个窗口,直接关闭窗口后切换到第一个窗口

     如图:

    引申:

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

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

    答:做一个句柄判断。

     

    其他情况就自己再造化了~~

     

     如有错误,请及时指出,谢谢!

     

  • 相关阅读:
    在数据库里进行分页处理
    new Date()在IE,谷歌,火狐上的一些注意项
    sql的一些小东西
    将sql数据库逆向生成PDM模型
    关于禁止在 .NET Framework 中执行用户代码。启用 "clr enabled" 配置选项
    MVC的Model层中的一些便签
    通过URL推送POST数据
    Python 关键字
    Python 标识符
    Python 注释(Python Comments)用法详解
  • 原文地址:https://www.cnblogs.com/4wheel/p/10149816.html
Copyright © 2020-2023  润新知