• What?JMeter做UI自动化!


    1|0JMeter做UI自动化

    不推荐,好别扭,但可行

    2|0插件安装

    • 搜插件selenium,安装

    3|0添加config

    • 添加线程组
    • 右键线程组->添加->配置元件->jp@gc - Chrome Driver Config

    • option和proxy不解释了

    4|0添加Sampler

    • 右键线程组->添加->取样器->jp@gc - WebDriver Sampler

    • script language 选择:JavaScript(可惜没有python)

    • 界面说明

      • Name - for the test that each Web Driver Sampler will have. This is used by the reports.
      • Parameters - is optional and allows the reader to inject variables used in the script section.
      • Script - allows the scripter to control the Web Driver and capture times and success/failure outcomes

    5|0DEMO代码及解释

    https://jmeter-plugins.org/wiki/WebDriverSampler/

    • 示例代码
    // 相当于python的from import java的import var pkg = JavaImporter(org.openqa.selenium) // Start capturing the sampler timing 开始捕获取样 WDS.sampleResult.sampleStart() // 代码块 WDS.browser.get('http://114.116.2.138:8090/forum.php') WDS.browser.findElement(pkg.By.id('ls_username')).sendKeys('admin') // 等价于 WDS.browser.findElement(org.openqa.selenium.By.id('ls_username')).sendKeys('admin') WDS.browser.findElement(pkg.By.id('ls_password')).sendKeys('123456') // js语法定义了一个 sleep函数 ,让你从python平滑过渡到 js var sleep = function(time) { var timeOut = new Date().getTime() + parseInt(time, 10); while(new Date().getTime() <= timeOut) {} } WDS.browser.findElement(pkg.By.cssSelector('.pn.vm')).click() sleep(3000) // 断言部分 if(WDS.browser.getCurrentUrl() != 'http://114.116.2.138:8090/forum.php') { WDS.sampleResult.setSuccessful(false) WDS.sampleResult.setResponseMessage('Expected url to be XXX') } else{ WDS.sampleResult.setSuccessful(true) } // Stop the sampler timing 停止取样 WDS.sampleResult.sampleEnd()
    • WDS就是Web Driver Sampler

    • 麻烦的是你可能并没有自动补齐(好像可以出来,但没研究),这个对象有哪些属性方法

    • 深入的研究要看

      https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/package-summary.html
    • 比如显式等待的一个应用

      var pkg = JavaImporter(org.openqa.selenium, org.openqa.selenium.support.ui) var wait = new pkg.WebDriverWait(WDS.browser, 5, 0.5) wait.until(pkg.ExpectedConditions.presenceOfElementLocated(pkg.By.cssSelector('ul.suggestions')))

    5|1关于WDS的一些属性

    1. WDS.name - is the value provided in the Name field (above).
    2. WDS.vars - JMeterVariables - e.g.

    vars.get("VAR1"); vars.put("VAR2","value"); vars.remove("VAR3"); vars.putObject("OBJ1",new Object());

    1. WDS.props - JMeterProperties (class java.util.Properties) - e.g.

    props.get("START.HMS"); props.put("PROP1","1234");

    1. WDS.ctx - JMeterContext
    2. WDS.parameters - is the value provided in the Parameters field (above).
    3. WDS.args - is an array of the strings provided in the Parameters field, but split by the space ' ' character. This allows the scripter to provide a number of strings as input and access each one by position.
    4. WDS.log - is a Logger instance to allow the scripter to debug their scripts by writing information to the jmeter log file (JMeter provides a GUI for its log entries)
    5. WDS.browser - is the configured Web Driver browser that the scripter can script and control. There is detailed documentation on this object on the Selenium Javadocs page.
    6. WDS.sampleResult - is used to log when the timing should start and end. Furthermore, the scripter can set success/failure state on this object, and this SampleResult is then used by the JMeter reporting suite. The JMeter javadocs provide more information on the API of this object

    __EOF__

    本文作者老吴的博客
    本文链接https://www.cnblogs.com/wuxianfeng023/p/17150643.html
    关于博主:评论和私信会在第一时间回复。或者直接私信我。
    版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
    声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
  • 相关阅读:
    基于vue和nodejs的项目知识信息分享平台
    Http客户端Feign
    MySQL——索引优化,索引机制,索引类型及其使用
    深入了解Laravel:PHP面试宝典
    【JavaScript】使用Canvas组件自动生成海报图片
    Elastic search的日期问题
    性能自动化测试
    android studio avd加载自己编译的镜像
    GBase 8a数据集成之Kerberos认证
    Windows系统解压zip文件之后乱码的问题的原因和解决方法
  • 原文地址:https://www.cnblogs.com/wuxianfeng023/p/17150643.html