zoukankan      html  css  js  c++  java
  • selenium---多线程启动浏览器

      在做web网页测试的时候,功能测试阶段不仅仅只使用一种浏览器,需要拿多个浏览器进行测试,这就是我们常说的网页版的兼容性测试,那么我们在做web自动化的时候,如何使用多个浏览器呢?有的朋友说直接改启动浏览器类型,这种要求太慢,如果在公司这样干,肯定会被公司请回家的,那么我们考虑通过多线程的方法进行启动浏览器,然后来帮助我们执行用例。

    多线程启动浏览器

    这里简单的列举下安静如何启动多个浏览器,这里先把思路进行列出来,根据思路进行一步步写

    1、先把浏览器驱动单独封装起来,调用时,直接选取对应的驱动

    2、把想要执行的用例进行也单独封装起来。

    3、通过多线程进行调用封装的用例,每启动1次线程,就运行一次用例。

    4、把多个浏览器的名称列举出来,通过循环的方式把浏览器参数传入到用例中。从而进行执行用例

    封装浏览器驱动

    这里安静对简单的几种浏览器驱动进行了封装,通过传参为浏览器的名称进行选择浏览器类型。然后把对应的驱动进行返回出去

    def Browser(browser):
        driver = None
        if browser == "ie":
            driver = webdriver.Ie()
        elif browser == "firefox":
            driver = webdriver.Firefox()
        elif browser == "chrome":
            driver = webdriver.Chrome()
        else:
            print('输入的正确的浏览器信息')
        return driver

    封装用例

    这里为了简单,安静也只是简单的封装了百度查询的用例

    def test_baidu(browser_name):
        driver = Browser(browser_name)
        driver.get('https://www.baidu.com')
        driver.find_element_by_id('kw').send_keys('测试-安静')
        driver.find_element_by_id('su').click()
        print(driver.title)
        print('通过浏览器:%s'%browser_name)

    封装多线程

    封装了一个线程,通过传入参数来获取浏览器的类型

    def run_case(name):
        thread_list = []
        for i in range(1):
            appium_server = threading.Thread(target=test_baidu,args=(name,))
            thread_list.append(appium_server)
        for j in thread_list:
            j.start()

    完整代码

    # coding:utf-8
    
    from selenium import webdriver
    import threading
    
    def Browser(browser):
        driver = None
        if browser == "ie":
            driver = webdriver.Ie()
        elif browser == "firefox":
            driver = webdriver.Firefox()
        elif browser == "chrome":
            driver = webdriver.Chrome()
        else:
            print('输入的正确的浏览器信息')
        return driver
    
    def test_baidu(browser_name):
        driver = Browser(browser_name)
        driver.get('https://www.baidu.com')
        driver.find_element_by_id('kw').send_keys('测试-安静')
        driver.find_element_by_id('su').click()
        print(driver.title)
        print('通过浏览器:%s'%browser_name)
    
    def run_case(name):
        thread_list = []
        for i in range(1):
            appium_server = threading.Thread(target=test_baidu,args=(name,))
            thread_list.append(appium_server)
        for j in thread_list:
            j.start()
    
    if __name__ == '__main__':
        a = ('chrome','firefox')
        for i in a:
            run_case(i)

    安静这里就不放动图了,大家可以自己去尝试下,封装的并不是很好地代码,如果你有更好的方法,可以在下方留言,共同学习

  • 相关阅读:
    mysql命令集锦
    linux 删除文件名带括号的文件
    linux下的cron定时任务
    struts2文件下载的实现
    贴一贴自己写的文件监控代码python
    Service Unavailable on IIS6 Win2003 x64
    'style.cssText' is null or not an object
    "the current fsmo could not be contacted" when change rid role
    远程激活程序
    新浪图片病毒
  • 原文地址:https://www.cnblogs.com/qican/p/14031639.html
Copyright © 2011-2022 走看看