1 前言
对于Web项目中,为了提升用户的体验感,我们无法避免需要进行兼容性测试。在没有自动化测试前,我们总是苦逼的在一台或多台机器上安装N种浏览器,然后手工在不同的浏览器上验证主业务流程和关键功能模块功能,测试Web项目在不同浏览器或不同版本浏览器上都能够正常运行。
下面我们看看怎么使用Python结合Selenium如何进行自动化的跨浏览器测试。
2 跨浏览器测试
跨浏览器测试是功能测试的一个分支,用以验证Web应用能在不同的浏览器上正常工作。
3 为什么需要跨浏览器测试
通常情况下,我们都期望Web项目能够被我们的用户在任何浏览器上使用。例如:有的人喜欢用Edge来打开京东,但有的人喜欢使用Firefox或Chrome。我们期望的是我们研发的Web系统能在任何浏览器上正常的工作,这样能吸引更多的用户来使用。
-
需要跨浏览器测试的根源
-
在不同浏览器字体大小不匹配
-
javascrpit的实现不一样
-
css、html的验证有所区别
-
有的浏览器或低版本不支持HTML5
-
页面对齐和div大小问题
-
图片位置或大小问题
-
浏览器和操作系统间的兼容问题
-
......
-
以上几个方面不仅仅对布局有影响,甚至会导致功能不可用,所以我们需要进行跨浏览器测试。
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浏览器进行登录功能兼容性测试,登录成功
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走
这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….
这些都在下方我的微信公众号里免费获取~