• 0
  • 1
分享
  • JMeter如何联合Selenium WebDriver进行自动化测试
  • 恬恬圈 2019-07-12 13:28:36 字数 3300 阅读 3089 收藏 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小编联系。

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   51Testing测试行业调查问卷得不得填一下吧。这套问卷能够对未来的行业发展趋势做出权威的分析,只要点击链接参与,还能获得实用软件测试资料。链接:http://vote.51testing.com/  最近发生了一起生产事故,究其根源,事故本身属于架构或者需求层面需要规避的问题,测试人员的责任其实是非常小的,但实际情况是:相关测试人员因此承担了很大的压力,成为质量问题的“背锅侠”。  实际上,测试人员一直处于“背锅侠”的处境,今天就来聊聊,测试人员究竟背了哪些锅?  测试背的第一层锅:产品不能如期交付的锅  我们知道,产品交付排期一般是固定的,很多时候,我们在这个基础上,进行开发测试排期...
            0 0 498
            分享
          • 01运行1)App安装完成后的试运行,可正常打开软件。2)App打开测试,是否有加载状态进度提示。3)App页面间的切换是否流畅,逻辑是否正确。4)注册  同表单编辑页面  用户名密码长度  注册后的提示页面  前台注册页面和后台的管理页面数据是否一致  注册后,在后台管理中页面提示5)登录  使用合法的用户登录系统  系统是否允许多次非法的登录,是否有次数限制  使用已经登录的账号登录系统是否正确处理  用户名、口令(密码)错误或漏填时能否登陆  删除或修改后的用户,原用户名登陆  不输入用户口令和重复点“确定/取消”按钮,是否允许登录  登陆后,页面中登录信息  页面中有注销按钮  登录超...
            12 12 1738
            分享
          •   众多接口管理工具如雨后春笋搬冒出。让人欣慰的是,有许多优秀作品来自国内,包含YApi和rap。  看着中文的官网,熟悉的汉语,不禁让人暗爽。当然这也就带来另一个弊端,因为使用基数少,所以参考资料少。我们想学习使用方法,只能依赖官方文档,也算是福祸相倚了。  本文将带您走进Yapi的世界,让您体验一回小清新的接口管理工具。  根据统计,市面上互联网项目超过10亿,保守统计涉及的API数量有100亿。但是很多API的质量堪忧。因为与API相关的文档、调试、测试和数据Mock在工作中效率非常低。  我们急需一款产品,它需要具有接口管理功能,提供调试,文档管理和测试功能。这时YApi横空出世。  ...
            0 0 368
            分享
          • 从当初的开发,到后来的功能加自动化测试,觉得自己需要去接触一些新的东西。从9月份开始,开始有个新的团队,专门负责网站的性能提高,于是,就跟老大申请了去支持这个team。首先,我这里说的性能测试,不是传统意义上的压测,所以我们tech lead一直在纠正我,不叫performance testing,而是叫site speed testing。国外的网站不会像淘宝会有那么大的流量,所以我们不是很看重压测,有监控就够了。做网站速度测试之前,首先我们要弄明白我们在意的metrics,那么有哪些关键的metrics呢?Metrics1.速度指标(SpeedIndex)速度指数是一个计算的指标,用来衡量...
            1 3 2834
            分享
          • 在上一小节,我们简单介绍了接口文档,以及对于接口本身的测试,从本小节开始我们来介绍一下业务功能的测试。需求分析我们先给一份产品需求如下:点击“我喜欢”按钮,调起一个弹窗,展示我喜欢的明星列表;明星排列顺序按照添加时间倒序排列;可分页展示,向上划动,可展示下一页内容,每页最多展示2条内容。我们逐条分析一下,这几条都分别是由哪些开发同学负责:肉眼可见的按钮一定是由前端或者客户端来完成,不是我们测试重点;倒序排列,前后端均可完成,但一般是由后端处理完成后,交给前端客户端展示,这是接口测试的重点;前后端均可完成。但如果是由前端完成,那么后端需要把所有数据一次性给到前端,我们想一下如果数据量巨大,那么对...
            0 0 1830
            分享
      • 51testing软件测试圈微信