知识总结Selenium云端测试
在企业构建大规模Web应用时,开发人员往往着眼于如何改进现有功能集,以及提高应用的可扩展性。而对于质量检查人员,他们更关心的是,Web应用的整体性能、可用性、以及使用中的兼容性等方面。毕竟,如果您的Web应用产品是准备面对广大区域性用户、乃至全球的消费者的话,那么他们可能通过五花八门的浏览器、设备、操作系统、及其各种组合,来访问您所提供的服务。
目前,针对此类需求最经济、最有效的方法便是:实施基于云的自动化浏览器测试。其中,业界最常用的手段便是采用Selenium测试。下面,让我们一起深入了解采用Selenium云端测试对于跨浏览器性能检测的重要性。本地测试的局限性
众所周知,针对本地托管网站的响应式测试,是成功实现在线业务的关键。为了确保网站的内容能够恰当地呈现在不同种类的设备、及其屏幕上,测试人员需要提供一台配置高端的计算机,并在上面安装不同的操作系统和Web浏览器版本(例如Chrome、Firefox、Safari等)的组合。显然,这种本地测试的方法不但费时费力,而且无法保证测试的覆盖率。测试人员亟待通过自动化测试,来覆盖各种可能性的测试用例。Selenium简介与特点
作为一种非常流行的开源测试框架,Selenium可以被用来创建各种可扩展的测试用例。它不但能够模拟用户与目标网站之间的交互,而且可以使用由Java、Python、PHP、Ruby、C#等多种语言编写的测试脚本,实现自动化的跨浏览器测试。
归纳起来,Selenium框架的主要特点包括如下方面:Selenium是开源的,可以被免费使用。诸如C#、Python、JavaScript、以及Ruby on Rails等流行编程语言,可以被无缝地用于Selenium框架。Selenium拥有庞大且持续的社区,能够为用户提供支持。用户可以针对自动化的GUI测试,下载各种WebDriver,以支持诸如Chrome、Firefox、Microsoft Edge等时下流行的Web浏览器。诸如Hypothesis、Robot Framework等流行且适用于Python的框架,可以通过使用它的各种输入值,来执行测试。
更多有关Selenium的详细介绍在云端使用Selenium测试的优点
总的说来,使用Selenium进行跨浏览器测试,可以在吞吐量、测试性能、并行性、覆盖范围等方面提供优势。具体而言,在云端使用Selenium测试的好处主要体现在如下方面:通过基于云的跨浏览器自动化测试平台,我们能够获得更广阔的浏览器与平台覆盖率。SaaS(软件即服务)模型能够提供按资源使用付费的成本效益与扩展模式。云服务赋能了并行测试(请参见--https://www.lambdatest.com/blog/what-is-parallel-testing-and-why-to-adopt-it/),且测试执行的速度更快。可以在新版、或旧版的Web浏览器、操作系统、以及设备上开展功能测试。通过利用错误跟踪、沟通和项目管理工具,来跟踪测试的整个进程,并实现团队成员的及时沟通。可利用Jenkins(请参见--https://www.lambdatest.com/blog/what-is-jenkins/)、TeamCity、Travis、Bamboo等CI/CD工具的优势,来实现构建、打包、以及测试过程的自动化。
下表总结了Selenium的功能类别与对应的工具:
云端Selenium测试的准备
为了着手在云端开展Selenium测试,我们选择LambdaTest(请参见--https://www.lambdatest.com/)作为基于云的跨浏览器测试平台。您可以在该平台上执行以下任务:在线对2000多种真实的浏览器和操作系统,进行基于Selenium的自动化和实时交互式跨浏览器测试。只需更改最少量的代码,即可将既有的测试移植到LambdaTest平台上。利用并发会话和并行执行的方式,来更快获取测试结果。通过查看LambdaTest服务器上针对某项测试的调试日志,来跟踪自动化测试,并分析失败的原因。使用Remote Selenium WebDriver,为那些强大的编程语言(如C#、Python、Ruby on Rails等),生成并实现跨浏览器的功能。使用详细的报告机制,来分析待测系统的性能。
下面是使用LambdaTest在云端进行Selenium测试的具体步骤:
步骤1:建立帐户
首先,您需要先在LambdaTest上完成注册。如上图所示,您可以通过访问注册页面--https://accounts.lambdatest.com/register,来创建一个新的帐户。完成后,请保存用户名和访问令牌,以便在登录LambdaTest仪表板时使用。
步骤2:选择定价方案
根据测试的要求,您可以选择适当的定价方案。目前,LambdaTest有Lite、Live、Web与移动浏览器自动化、以及Web自动化四种方案可供选择。您虽然可以随时对已选定的方案进行升/降级,但是其更改只能反映在下一个结算周期中。有关这四种方案的详细说明,请参见定价页面--https://www.lambdatest.com/pricing。
步骤3:浏览器功能生成器(Browser Capabilities Generator)
由于要在云端执行测试,因此您需要在Selenium Grid云上配置各种属性,其中包括:选择编程语言,指定用于测试的操作系统、浏览器类型、分辨率、以及版本号。
如上图所示,您可以登录平台,使用功能生成器来生成相关功能,以便执行跨浏览器的各种测试。之后,您需要转到"自动化"选项卡,以监视自动化浏览器的测试状态。同时,每一个测试都将具有与之相关联的测试ID和内部版本ID。其格式为--https://automation.lambdatest.com/logs/?testID=< test-id >&build=< build-id >。执行云端Selenium测试
有了前面的基础,下面让我们来看一个Python示例,它演示了如何使用LambdaTest上的远程Selenium Grid,在云端进行Selenium测试。串行测试
串行测试(Serial testing)是一种以串行方式(即,逐个顺次进行)执行测试的实践。它会在上一个测试完成之后,再执行下一个测试。使用串行测试的缺点是:由于没有充分利用Selenium测试框架和云基础架构的资源,因此它增加了测试执行的时间。针对此类测试,我们来讨论如下的测试步骤:在Firefox浏览器中打开DuckDuckGo。找到搜索框。输入查询的内容,即LambdaTest。执行搜索操作。释放资源。
具体实现代码为:
Python1 # Python example demonstrates Selenium testing on the Cloud using LambdaTest platform 2 import time 3 import unittest 4 import selenium 5 import urllib3 6 import time 7 import warnings 8 from time import sleep 9 from selenium import webdriver 10 11 test_url = "https://www.duckduckgo.com" 12 13 # Desired browser capabilities generated using LambdaTest Capabilities Generator 14 # https://www.lambdatest.com/capabilities-generator/ 15 16 desired_capabilities = { 17 "build" : "Selenium testing on the Cloud using LambdaTest", 18 "name" : "Selenium testing on the Cloud using LambdaTest", 19 "platform" : "Windows 10", 20 "browserName" : "Chrome", 21 "version" : "72.0" 22 } 23 24 class SeachTest(unittest.TestCase): 25 def setUp(self): 26 print("Start - SetUp") 27 28 # Ignore ResourceWarning related warnings 29 warnings.filterwarnings(action="ignore", message="unclosed", category=ResourceWarning) 30 31 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) 32 user_name = "user-name" 33 app_key = "app_key" 34 35 # Username and Access Token to use the LambdaTest platform 36 remote_url = "https://" + user_name + ":" + app_key + "@hub.lambdatest.com/wd/hub" 37 self.driver = webdriver.Remote(command_executor=remote_url, desired_capabilities=desired_capabilities) 38 39 print("End - SetUp") 40 41 def test_selenium_on_cloud(self): 42 print("Start - test_selenium_on_cloud") 43 self.driver.maximize_window() 44 self.driver.get(test_url) 45 46 # time.sleep(5) 47 sleep(5) 48 49 # Locate the element using the Inspect tool of the browser 50 elem = self.driver.find_element_by_xpath("//*[@id="search_form_input_homepage"]") 51 elem.send_keys("Lambdatest") 52 53 # Execute the search 54 elem.submit() 55 56 # Sleep for 10 seconds in order to see the results 57 sleep(5) 58 59 print("End - test_selenium_on_cloud") 60 61 def tearDown(self): 62 print("Start - tearDown") 63 # Close the browser. 64 self.driver.quit() 65 66 print("End - tearDown") 67 68 if __name__ == "__main__": 69 unittest.main()
而如下代码提供了:可登录平台的用户名和访问令牌的组合。user_name = "user-name" 2 app_key = "app_key" 3 4 # Username and Access Token to use the LambdaTest platform 5 remote_url = "https://" + user_name + ":" + app_key + "@hub.lambdatest.com/wd/hub"
我们使用LambdaTest Capabilities Generator来生成浏览器和平台的功能,同时需要选择用于实现的编程语言,以及浏览器规格。在此,我们的Python代码为:desired_capabilities = { 2 "build" : "Selenium testing on the Cloud", 3 "name" : "Selenium testing on the Cloud using LambdaTest", 4 "platform" : "Windows 10", 5 "browserName" : "Chrome", 6 "version" : "72.0" 7 } 8 9 ……………………………………………………………………… 10 ……………………………………………………………………… 11 self.driver = webdriver.Remote(command_executor=remote_url, desired_capabilities=desired_capabilities)
使用浏览器的检查工具,我们可以找到Web元素的详细信息,在该例子中,即为DuckDuckGo主页上的搜索框。
我们在Selenium中、以及代码中都使用到了XPath元素的属性。# Locate the element using the Inspect tool of the browser 2 elem = self.driver.find_element_by_xpath("//*[@id="search_form_input_homepage"]") 3 elem.send_keys("Lambdatest")
为了演示云端Selenium测试,我们使用了unittest框架,以及Selenium测试套件,从终端调用python命令—"python "来执行。
您可以通过导航到相应的测试ID和内部版本ID,以检查该自动化测试的状态。
并行测试
Selenium中的并行测试(Parallel testing)是指:通过并发运行自动化测试套件或用例,来减少测试的执行时间。虽然测试套件的组合是在多台服务器上被并行执行,但是每台服务器一次仍然只运行一个测试。
为了在LambdaTest上快速执行,我们在不同服务器上,以并发的方式来触发会话。如下图所示,我们调用了两个并发的会话。有关并行执行的测试案例、以及具体的定价方案,请参见:https://www.lambdatest.com/pricing。
我们设计了在Chrome和IE两种浏览器中开展并行测试的案例,它们遵从上述串行测试的步骤。因此,在LambdaTest服务器上的并发会话为2比2。
在具体实现中,我们使用LambdaTest Capabilities Generator生成了针对Chrome和IE浏览器的两种浏览器功能。
其中,测试1的Chrome浏览器功能代码为:desired_capabilities = { 2 "build" : "Parallel Testing - Selenium testing on the Cloud [Chrome]", 3 "name" : "Parallel Testing - Selenium testing on the Cloud [Chrome]", 4 "platform" : "Windows 10", 5 "browserName" : "Chrome", 6 "version" : "72.0" 7 }
测试2的IE浏览器功能代码为:desired_capabilities = { 2 "build" : "Parallel Testing - Selenium testing on the Cloud [IE]", 3 "name" : "Parallel Testing - Selenium testing on the Cloud [IE]", 4 "platform" : "Windows 7", 5 "browserName" : "Internet Explorer", 6 "version" : "11.0", 7 "ie.compatibility" : 11001 8 }
其余的实现代码与串行测试相同。下面展示的是针对IE浏览器的实现代码:# Python example demonstrates Selenium testing on the Cloud using LambdaTest platform 2 import time 3 import unittest 4 import selenium 5 import urllib3 6 import time 7 import warnings 8 from time import sleep 9 from selenium import webdriver 10 11 test_url = "https://www.duckduckgo.com" 12 13 # Desired browser capabilities generated using LambdaTest Capabilities Generator 14 # https://www.lambdatest.com/capabilities-generator/ 15 16 desired_capabilities = { 17 "build" : "Parallel Testing - Selenium testing on the Cloud [IE]", 18 "name" : "Parallel Testing - Selenium testing on the Cloud [ChromeIE]", 19 "platform" : "Windows 7", 20 "browserName" : "Internet Explorer", 21 "version" : "11.0", 22 "ie.compatibility" : 11001 23 } 24 25 class SeachTest(unittest.TestCase): 26 def setUp(self): 27 print("Start - SetUp") 28 29 # Ignore ResourceWarning related warnings 30 warnings.filterwarnings(action="ignore", message="unclosed", category=ResourceWarning) 31 32 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) 33 # user_name = "user-name" 34 # app_key = "app_key" 35 user_name = "himanshu.sheth@gmail.com" 36 app_key = "fbI6kxucn5iRzwt5GWYiNvaPb4Olu9R8lwBsXWTSaIOebXn4x9" 37 38 # Username and Access Token to use the LambdaTest platform 39 remote_url = "https://" + user_name + ":" + app_key + "@hub.lambdatest.com/wd/hub" 40 self.driver = webdriver.Remote(command_executor=remote_url, desired_capabilities=desired_capabilities) 41 42 print("End - SetUp") 43 44 def test_selenium_on_cloud(self): 45 print("Start - test_selenium_on_cloud") 46 self.driver.maximize_window() 47 self.driver.get(test_url) 48 49 # time.sleep(5) 50 sleep(5) 51 52 # Locate the element using the Inspect tool of the browser 53 elem = self.driver.find_element_by_xpath("//*[@id="search_form_input_homepage"]") 54 elem.send_keys("Lambdatest") 55 56 # Execute the search 57 elem.submit() 58 59 # Sleep for 10 seconds in order to see the results 60 sleep(5) 61 62 print("End - test_selenium_on_cloud") 63 64 def tearDown(self): 65 print("Start - tearDown") 66 # Close the browser. 67 self.driver.quit() 68 69 print("End - tearDown") 70 71 if __name__ == "__main__": 72 unittest.main()
如下图所示,在并行执行中,针对不同浏览器的两个.py文件,都会在同一处被终端所调用。
从LambdaTest的执行快照中,我们可以看出:并行测试的并发会话数越多,总体执行时间就越短。
小结
虽然Selenium是用于自动化Web浏览器测试的强大框架,但是如果我们将其用于本地基础架构的测试,那么测试设备的性能、可扩展性、以及吞吐量都会受到限制。因此,企业需要在云端针对Web应用、网站和移动应用进行Selenium测试。而并行测试的方式,往往能够加速整个执行的进程。为了获得更好的可扩展性和更优越的性能,我们可以使用LambdaTest之类的云平台,在Selenium中进行各种跨浏览器的功能性测试。
文章来源:https://developer.51cto.com/art/202012/636453.htm
火星梦是太空物流吗?火星梦是太空物流吗?埃隆马斯克是否能成为首位身家十万亿的企业家,并且我告诉你们,spaceX的意义根本不在于去火星,接下来我说的这个行业将会是十万亿的企业。我先把结论告诉你,太空之
实验成功制备双层硼烯众所周知,二维材料因有着原子尺度的厚度和独特的性能,被认为在纳米电子器件中有极大的应用潜力而受到关注。新产业的萌发和快速发展往往来源于新材料的发现,因此不断发现新的二维材料丰富和补
7个综合评估模型预测现有措施不足以将全球变暖限制在2内原标题7个综合评估模型预测现有措施不足以将全球变暖限制在2内科学家修正了气候变化模型,以预测未来的排放。据英国自然气候变化杂志22日发表的多模型分析结果表明,挪威国际气候与环境研究
星动力国星宇航星时代10卫星(广东恒健号)顺利完成在轨测试并转入正式运行近日,国星宇航组织召开了星时代10卫星(广东恒健号)在轨测试总结评审会。目前,该卫星在轨运行状态良好,星时代10卫星在轨测试圆满完成,具备转入业务化运行的条件。今年7月3日,星时代
碘动力航天器首次完成在轨测试英国自然杂志18日发表的一项工程学研究指出,在电推进系统中使用碘而不是更贵也更难储存的氙气,或能提升航天器的性能。研究结果凸显出碘作为航天业替代推进剂的优势。电推进系统通过电力将推
银河系第一个气体巨行星诞生木星的形成大大约用了100万到1000万年,而且最初的木星总有一个差不多和地球大的核,然后吸附了大概在地球三百倍质量的气体,最后形成了今天我们所看到的形状。木星在胚胎时期的时候,要
冒天下之大不韪!俄罗斯为何仍要搞反卫星试验?不做它心里不踏实这几天来,让全球航天人最为担心的一件事情,应该就是俄罗斯于11月15日进行的一场反卫星试验了,一颗苏联于1982年发射的早已退役的Cosmos1408信号侦察卫星被准确击中,事件产
时间之猜想时间到底是什么?看不到,摸不着,感觉它没有任何实体,可是它却又确确实实存在,它无时无刻不在影响所有东西。那么,它真的没有实体吗?在遥远的古时代,人们同样不知道空气的存在,虽然空气始
科学家称将小型望远镜送到土星附近可解开宇宙中的一些最大的谜团目前已有数十台天基望远镜在地球附近运行,并提供了令人难以置信的宇宙图像。但是,想象一下远在外太阳系的望远镜。探索我们的太阳系或窥视遥远宇宙的黑暗的能力将使其成为一个独特的强大科学工
卫星发现地球正在变绿?原因和中国印度有关,这是什么意思想必大家在第一次接触地球这个概念的时候,我们脑海中的地球是蔚蓝的。因为他被海洋所包裹。后来渐渐地,我们发现地球的颜色变成了灰蒙蒙的颜色。这是由于科技在不断发展的过程中,由于过度污染
沙子宇宙和蚂蚁星球!人类找不到外星文明,也许这就是原因上一期我们说到费米悖论,宇宙如此浩瀚,外星文明是应该存在的。但应该有却又找不到,这到底是为什么呢?有人认为,也许外星文明就存在于我们身边的任何地方,因为人类的认知极限,所以我们无法
垃圾,渣男,劣迹艺人,小猪后悔多人运动,现在还想复出?据说小猪最近一直在复出的边缘疯狂试探多人运动,时间管理大师流量是有了,人却没了其实要说人家为什么这么想复出,肯定不是缺钱。以罗志祥成名至今赚到的钱,孙子辈都可以保证生活无忧了,究其
网易云音乐下线所有明星艺人榜单付费限购8月29日晚,网易云音乐发布关于进一步加强饭圈乱象专项治理的公告。公告称,为贯彻落实相关政策要求,实履行平台主体责任,网易云音乐将进一步加强饭圈乱象专项治理。在清理有害信息强化未成
取消艺人榜单行为,整治饭圈文化,但核心问题却没有看到据网信中国今日消息,中央网信办发布关于进一步加强饭圈乱象治理的通知,通知提出取消明星艺人榜单严管明星经纪公司严禁呈现互撕信息严控未成年人参与等10项要求。在此项措施发布没多久,社交
性感女神温碧霞的演艺人生温碧霞,原名温啤霞1966年7月30日出生于香港,中国香港女演员1981年,正在读书的温碧霞,被导演黎大炜编剧文隽发掘,与林碧琪合作拍摄第一部戏靓妹仔,并获得第2届香港电影金像奖最
马嘉祺307事件后,公司专门准备考场,测试每一位艺人的文化成绩马嘉祺307事件后,公司专门准备考场,测试每一位艺人的文化成绩说起马嘉祺相信大家都不陌生,起初也是不少网友心目中的爱豆,但随着马嘉祺的高考成绩曝光,他也被骂得挺惨,毕竟公司一直给他
我们都像冰山一角当我们遇见另一个人时,我们会看到他们的脸,我们会看到他们的身体,我们甚至会通过握手或拥抱来感受他们。我们听到他们的声音当它们离我们很近的时候,我们甚至可以闻到它们身上的香味。可以说
品读兵卒无河小时候,我家搬住到乡镇角角一条破败的巷子中,那里住满了收入很低的人,他们生存的方式是与命运来赌生活。巷子里的人都咬紧牙关与生活拼斗着,他们虽然不安命,却像一条汇成的河流,安份地让岁
海盗隐藏宝藏的迷人故事海盗小黑笔记本的迷人故事命运有时是不可预知的这是命运的难以置信的转折,但后来他有2万美元现金给我看,证明了它的真实性。Anil和我是儿时的朋友,我们一直在孟买的一家著名公司担任软件
新入职公司的残酷竞争最近更新得很慢,主要是小编这一周经历很魔鬼的一周,太忙了,每天回到家都快10点了,还得吃饭,所以有好些天没有更新内容。职场很残酷啊。原来我的工作相对来说没有那么的残酷。你知道吗,新
朝气锐,昼气惰,暮气归。活用各时间段的工作术朝气锐,昼气惰,暮气归。上午是一天当中精力最旺盛的时候。过了中午,精力开始慢慢走下坡,到了傍晚,已经差不多见底,这种时候只会想着赶快回家。像这样在早午晚不同时段,安排不同性质的工作
不是所有的人都会迷失方向我们经常欣赏着自己的过去,却迷失了方向,而去思考,又将我们带回了新的重要决定中,才造就了我们新的方向。走出荒野(Wild)(2014)讲述了一个女人的真实故事。影片改编自谢莉尔mi