• 0
  • 1
分享
  • JMeter如何联合Selenium WebDriver进行自动化测试
  • 恬恬圈 2019-07-12 13:28:36 字数 3300 阅读 3600 收藏 1

Jmeter如何与Selenium WebDriver采样器结合使用

要将Selenium WebDriver与JMeter一起使用,只需要下载Webdriver Set插件即可。WebDriver采样器能有助于测试基于AJAX 和GWT web应用程序的性能,以及模拟用户操作。

通过Meter Plugins Manager(JMeter插件管理器)安装Webdriver。

如同以往那样编写WebDriver脚本,然后将“Thread Group(线程组)”添加到“Test Plan(测试计划)”中。

1.png


添加配置元素 —> HTTP Cookie管理器,配置元素 —> jp@gc - Firefox驱动程序配置,采样器 —> jp@gc - 网页驱动程序采样器,监听器 —> 查看结果树。

结果如下图:

2.png


打开“Web Driver Sampler”,并添加以下代码:

var pkg = JavaImporter(org.openqa.selenium); //WebDriver classes  
var support_ui = JavaImporter(org.openqa.selenium.support.ui.WebDriverWait); //WebDriver classes  
var wait = new support_ui.WebDriverWait(WDS.browser, 5000);  
WDS.sampleResult.sampleStart(); //captures sampler's start time  
WDS.sampleResult.getLatency();  
WDS.log.info("Sample started");  
WDS.browser.get('http://duckduckgo.com'); //opens website specified in '
WDS.log.info("Sample ended - navigated to duckduckgo.com");  
var searchField = WDS.browser.findElement(pkg.By.id('search_form_input_homepage')); //saves search field into searchField  
searchField.click(); //clicks search field  
searchField.sendKeys(['blazemeter']); //types word "blazemeter" in field  
WDS.log.info("Searched for BlazeMeter");  
var button = WDS.browser.findElement(pkg.By.id('search_button_homepage')); //Find Search button  
button.click(); //Click Search Button  
WDS.log.info("Clicked on the search button");  
var link = WDS.browser.findElement(pkg.By.cssSelector('#r1-0 > div > h2 > a.result__a > b')); //also saves selector as variable but uses CSS.  
link.click(); //Click the search result's Link  
WDS.sampleResult.sampleEnd();

(下面会对代码进行详细注解。)

现在,尝试开始测试。无论做什么,保持“线程组”中所有值为1,如下图。

1.png

你应该会看到新的Firefox窗口会打开网站。搜索“BlazeMeter”。测试开始后,打开“查看结果树”来确认有没有错误。如果响应代码为“200”且响应消息为“OK”,则测试运行成功。如果没有,请检查WebDriver脚本是否存在错误。

回顾代码

代码开头导入两个包,分别是“org.openqa.selenium”和“org.openqa.selenium.support.ui.WebDriverWait”,允许您使用WebDriver中的所有类。

这是一个方便的WebDriver API包列表。

如果你想要使用任何包,都可以使用JavaImporter导入它们:

var action = JavaImporter(org.openqa.selenium.PACKAGENAME.CLASSNAME)

WDS.sampleResult.sampleStart()和WDS.sampleResult.sampleEnd()能够捕

获采样器的时间并跟踪它。你可以删除它们,该脚本仍然有效,但您无法获得加载时间:

1.png

WDS.browser.get('http://duckduckgo.com') - 打开网站http://duckduckgo.com

var searchField = WDS.browser.findElement(pkg.By.id('search_form_input_homepage')) - 将搜索标签保存到searchField变量中。

searchField.click() - 单击搜索标签。

searchField.sendKeys(['blazemeter']) - 在搜索文本域中输入“blazemeter”

var link = WDS.browser.findElement(pkg.By.ByCssSelector('#r1-0> div> h2> a.result__a> b')) - 使用CSS选择器定位某条搜索结果记录

WDS.log.info(WDS.name +'已记录条目') - 记录消息。

如何使用选择器

要简化选择器的使用,你可以安装Selenium IDE插件。 Selenium IDE是一个Firefox附加组件,带有用于浏览器中操作的录制选项。要获得类似的选择器,请下载并安装该附加组件。 (请务必下载.xpi文件。)

打开Duck Duck Go和Selenium IDE。设置Selenium IDE的基本URL https://duckduckgo.com/。键入“blazemeter”,然后单击“搜索”。如果打开Selenium IDE,你就会看到捕获的操作和选择器。

1.png

可以手动将所有捕获的数据转换为WebDriver格式(参见下文)。

1.png

在BlazeMeter上运行测试

要在BlazeMeter上使用更多并发用户在云中启动WebDriver测试,请使用Firefox,这是目前唯一支持WebDriver的浏览器。运行它时,你需要创建一个新测试并上传你的JMX文件。

在上传JMeter脚本之前,最好删除/禁用“查看结果树”,否则会降低测试性能。几分钟后,将生成报告。我们使用40个并发用户启动了测试,如响应时间中所述(*请参阅“监控”选项卡)。

1.png

虽然我们只用40个用户启动了测试,但从测试一开始就充分利用了CPU。这正是每个采样器启动一个浏览器的原因。在编写测试时一定要考虑到这一点。

51Testing推荐

使用WebDriver插件时,为了取得更好的负载测试的执行效果,可以将Jmeter和Selenium组合再一块儿进行测试。 WebDriver采样器的数量应少于JMeter采样器的数量。如果你需要通过Ajax从网站获得任何值,你可以将WebDriver采样器与Once Only Controller控制器一起使用,以避免持续/重复的浏览器启动。

你还可以将Taurus与其本机Selenium执行一起使用,作为利用Selenium编写的现有功能测试的一种方式。


本文未经授权不得转载,如需转载请与51Testing小编联系。

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   一、写在前面的话  作为编程从业人员,单元测试早已不是生僻的、不为人知、不受重视的概念。  但是与此同时,实际情况下,除了开源SDK基本上会标配单元测试外,在真正的项目开发中,单元测试的实践程度低之又低。  这里面的原因非常非常多,笔者听到的最多的不写单元测试的原因就是 —— 没时间!  但是没时间是否能和'可有可无'画等号?是否能和'不重要'画等号?  也就是说,假设给到足够充足的时间,是否单元测试就能够顺利实施?覆盖率就能达到100%?  笔者后面会针对这些问题阐述笔者自己的理解。  二、不考虑时间的情况下,到底有没有必要搞单元测试?  假设有这样一个场...
            0 0 959
            分享
          •   1.接口测试:针对软件对外提供服务的接口的输入输出进行测试,以及接口间相互逻辑的测试,验证接口功能与接口描述文档的一致性。  2.接口测试流程:   1)获取接口信息:通过接口文档或抓包来获取接口的基本调用方式和返回,抓包可以通过fiddler、charles或者chrome的开发者工具等   2)接口测试用例设计:根据获取到的接口信息,按照接口测试用例设计方法,设计参数和预期返回结果   3)接口发包:使用工具或者编程向接口传递参数   4)返回信息验证:获取接口返回的结果,进行解析和验证  3.测试某网站的接口,包括:鉴权、登录和注销   1)鉴权接口url:http://www.XX...
            4 6 3301
            分享
          •   有一次,我在做一个web网站的压测时,总感觉并发上不去,后台,中间件包括网络等所有性能都是OK的,后来在排查前端时才发现,原来是图片加载速度过慢造成的瓶颈,如果我当初能对前端图片的性能优化多一些认知,那么可能排查起来就更加的丝滑了,所以作为测试人员,是很有必要了解前端图片的优化方法的,这也能提升你在开发心中地位。在当今数字化的世界中,无论是网页设计、移动应用开发,还是各种多媒体软件,图片都是不可或缺的元素。然而,图片的加载速度却常常成为影响用户体验的关键因素。  一、图片压缩   图片压缩是提升加载速度的首要手段。通过减少图片文件的大小,可以显著缩短加载时间,同时又能最大程度地保...
            0 0 632
            分享
          •   作为一个测试新人,面对自己职场的第一份测试工作,在入职之前都会有点迷茫,去了新公司要如何展开测试工作?会不会有专人带?会不会有培训?  该如何处理好跟新同事之间的关系?如何搭建测试环境等等一系列问题,下面我们就针对这些问题做一下分析。  1、入职公司的第一天都干些什么?  根据自己以往的工作经验,入职公司的第一天基本上就是办理入职手续,一些比较大的公司还会有专人带你了解公司企业文化,这一系列下来基本一上午就过去了,接下来就会将你交给用人部门。  2、新人入职会有培训吗?  一般的公司会有专人对新入职的员工进行培训,包括公司业务、公司文化等等多方面。  当然也不是所有的公司都会有培训的过程,...
            1 1 1723
            分享
          • 1、测试用例定义测试用例又叫test case,是为某个特殊目标而编制的一组测试输入,执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。2、测试用例的特性有效性:测试用例能够被使用,且被不同人员使用测试结果是一致的可复用性:良好的测试用例具有重复使用的功能,如:回归测试易组织性:好的测试用例会分门别类地提供给测试人员参考和使用可评估性:从测试管理的角度,测试用例的通过率和软件缺陷的数目是软件产品质量好坏的测试标准可管理性:从测试管理的角度,测试用例的通过率和软件缺陷的数目是软件产品质量好坏的测试标准3、测试用例的八大要素用例编号用例标题项目/模块  优先...
            0 0 810
            分享
      • 51testing软件测试圈微信