zoukankan      html  css  js  c++  java
  • Selenium_python自动化跨浏览器执行测试(简单多线程案例)

    发生背景:

        跨浏览器测试是功能测试的一个分支,用以验证web应用在不同浏览器上的正常工作,通常情况下,我们都期望web类应用能够被我们的用户在任何浏览器上使用,例如有的人喜欢IE浏览器上使用,有的人喜欢firefox或者有的人喜欢Chrome。我们期望系统在任何浏览器上正常使用可以吸引更多的用户来使用。

    问题根源:

        需要我们跨浏览器测试的根源是:

        1、web不同和css样式在不同浏览器中显示结果是不一样的;(非常让前段开发头疼的ie一直伴随这windows这么些年)

        2、javascrpt在不同浏览器中实现方式不一样,例如某些点击后动作和点击后返回结果等等;

        3、有的低版本浏览器不支持h5;

        4、图片位置大小问题、字体大小问题;

        5、div、span...等标签float属性问题等;

        6、浏览器和操作系统间的兼容问题;

        以上几点轻微的是页面样式不一样,严重的会导致某些功能不可用;

    解决思路:

        如何执行跨浏览器测试,手工就是安装多个浏览器执行手工点点测试,但是发现问题有时候可能是之前的缓存等,然后关掉浏览器清除历史浏览记录重新做一遍操作,自动化如何解决这个问题呢?我们可以使用Selenium webdriver在不同的浏览器(Firefox、IE、Chrome...)上运行测试用例执行测试;

        下面我们基于Python的多线程技术来尝试启动多个浏览器进行selenium执行自动化测试;

        具体代码如下:   

    #-*-coding:utf-8-*-
    __author__='dong.c'
    from selenium import webdriver
    import sys
    import thread
    import threading
    from time import sleep
    reload(sys)
    sys.setdefaultencoding("utf-8")
    def test_baidu_search(browser,url):
        driver = None
        #你可以自定义这里,添加更多浏览器支持进来
        if browser == "ie":
            driver = webdriver.ie()
        elif browser == "firefox":
            driver = webdriver.Firefox()
        elif browser == "chrome":
            driver = webdriver.Chrome()
        if driver == None:
            exit()
        print u"开始【case_001】百度搜索"
        driver.get(url)
        print u"清除搜索中的数据,输入搜索关键词"
        driver.find_element_by_id("kw").clear()
        driver.find_element_by_id("kw").send_keys(u"博客园")
        print u"单击 百度一下 按钮 开始测试"
        driver.find_element_by_id("su").click()
        sleep(3)
        print u"关闭浏览器,退出webdriver"
        driver.quit()
    if __name__ == "__main__":
        #浏览器和首页url
        data = {
            "ie":"http://www.baidu.com",
            "firefox":"http://www.baidu.com",
            "chrome":"http://www.baidu.com"
        }
        #构建并启动线程
        for b,url in data.items():
            t = threading.Thread(target = test_baidu_search,args=(b,url))
            t.start()

     运行结果:

        运行上述代码,你会发现3个浏览器都会启动开始进行百度搜索,这里只是做了最简单核心区域的多线程的演示,你可以整理下写入unittest中加上一些断言,梳理出更加适合自动化的测试业务场景,至于如何更加深入利用selenium把软件兼容性做的更好,还有更多的需要挖掘;

  • 相关阅读:
    Jenkins+gitlab自动化构建部署
    浅尝CI/CD,真香
    各种奇葩,我感觉我快窒息了,来吐吐槽...
    用SMART原则来创建一个好的OKR
    用OKR改变个人能力得不到明显提升的困境
    承诺型与愿景型,什么样的OKR适合你?
    OKR文化:关键成果必须具备的五个特点
    为什么不能完全用OKR替代KPI?
    OKR的激励方式应该注意什么?
    OKR如何与绩效考核并行?
  • 原文地址:https://www.cnblogs.com/dong-c/p/8976746.html
Copyright © 2011-2022 走看看