Python+Selenium+Threading进行兼容性测试

1 前言

  对于Web项目中,为了提升用户的体验感,我们无法避免需要进行兼容性测试。在没有自动化测试前,我们总是苦逼的在一台或多台机器上安装N种浏览器,然后手工在不同的浏览器上验证主业务流程和关键功能模块功能,测试Web项目在不同浏览器或不同版本浏览器上都能够正常运行。
  下面我们看看怎么使用Python结合Selenium如何进行自动化的跨浏览器测试。

2 跨浏览器测试

  跨浏览器测试是功能测试的一个分支,用以验证Web应用能在不同的浏览器上正常工作。

3 为什么需要跨浏览器测试

  通常情况下,我们都期望Web项目能够被我们的用户在任何浏览器上使用。例如:有的人喜欢用Edge来打开京东,但有的人喜欢使用Firefox或Chrome。我们期望的是我们研发的Web系统能在任何浏览器上正常的工作,这样能吸引更多的用户来使用。

  • 需要跨浏览器测试的根源

    1. 在不同浏览器字体大小不匹配

    2. javascrpit的实现不一样

    3. css、html的验证有所区别

    4. 有的浏览器或低版本不支持HTML5

    5. 页面对齐和div大小问题

    6. 图片位置或大小问题

    7. 浏览器和操作系统间的兼容问题

    8. ......

以上几个方面不仅仅对布局有影响,甚至会导致功能不可用,所以我们需要进行跨浏览器测试。

4 如何执行跨浏览器测试

  如果我们使用Selenium的Webdriver,那我们就能够自动的在Edge、Firefox、Chrome等不同浏览器上运行测试用例。为了能在同一台机器上不同浏览器上同时执行测试用例,我们需要多线程技术。

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

5 封装浏览器驱动

  通过传递浏览器的名称进行选择浏览器类型。然后把对应的驱动进行返回出去,代码如下:

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

6 封装用例

  下面小编通过封装Ecshop登录的测试用例

def test_ecshop_login(browser_name):
    driver = Browser(browser_name)
    driver.get('http://www.tsecshop.com/user.php')
    driver.maximize_window()
    driver.find_element_by_name('username').send_keys('tashi')
    driver.find_element_by_name('password').send_keys('123456')
    driver.find_element_by_name('submit').click()
    text = driver.find_element_by_link_text("tashi").text
    assert text=='tashi'
    print('使用%s浏览器进行登录功能兼容性测试,登录成功'%browser_name)

7 封装多线程

  通过传入参数来获取浏览器的类型

def run_case(name):
    thread_list = []
    thread = threading.Thread(target=test_ecshop_login,args=(name,))
    thread_list.append(thread)
    for j in thread_list:
        j.start()

8 完整代码

from selenium import webdriver
import threading

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

def test_ecshop_login(browser_name):
    driver = Browser(browser_name)
    driver.get('http://www.tsecshop.com/user.php')
    driver.maximize_window()
    driver.find_element_by_name('username').send_keys('tashi')
    driver.find_element_by_name('password').send_keys('123456')
    driver.find_element_by_name('submit').click()
    text = driver.find_element_by_link_text("tashi").text
    assert text=='tashi'
    print('使用%s浏览器进行登录功能兼容性测试,登录成功'%browser_name)

def run_case(name):
    thread_list = []
    thread = threading.Thread(target=test_ecshop_login,args=(name,))
    thread_list.append(thread)
    for j in thread_list:
        j.start()

if __name__ == '__main__':
    browser_obj = ('chrome',"edge",'firefox')
    for i in browser_obj:
        run_case(i)

运行的结果如下:

使用chrome浏览器进行登录功能兼容性测试,登录成功
使用edge浏览器进行登录功能兼容性测试,登录成功
使用firefox浏览器进行登录功能兼容性测试,登录成功

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….

这些都在下方我的微信公众号里免费获取~

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值