微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

移动设备在JMeter中使用JSR223请求仿真-无此属性:类

如何解决移动设备在JMeter中使用JSR223请求仿真-无此属性:类

场景:

  1. 打开主页,然后单击“接受所有Cookie”(“ Only Only”控制器中的JSR223 Sampler1);
  2. 从参数化的URL(另一个控制器中的JSR223 Sampler2)中打开页面

主页的JSR223 Sampler1代码

导入org.apache.jmeter.samplers.SampleResult;进口 org.openqa.selenium.chrome.ChromeOptions;进口 org.openqa.selenium.chrome.ChromeDriver;进口 org.openqa.selenium.WebDriver;导入org.openqa.selenium.By;进口 org.openqa.selenium.WebElement;进口 org.openqa.selenium.support.ui.ExpectedConditions;进口 org.openqa.selenium.support.ui.webdriverwait;进口 java.util.concurrent.TimeUnit;

System.setProperty(“ webdriver.chrome.driver”, “ vars.get(” webdriver_path“)”);

Map mobileEmulation =新的HashMap (); mobileEmulation.put(“ userAgent”,“ vars.get(” userAgent“)”); Map chromeOptions = new HashMap (); chromeOptions.put(“ mobileEmulation”,mobileEmulation); ChromeOptions options = new ChromeOptions(); options.setExperimentalOption(“ mobileEmulation”,mobileEmulation); ChromeDriver驱动程序=新的C​​hromeDriver(选项);

driver.get(“ https://vars.get(” main_page“)”); webdriverwait等待=新 webdriverwait(驱动程序,20); wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(“ xpath”)))); driver.findElement(By.xpath(“ xpath”))。click(); log.info(driver.getTitle());

该URL组中任何页面的JSR223 Sampler2代码

driver.get(“ https:// $ {url}”);

错误消息: 响应消息:javax.script.ScriptException:groovy.lang.MissingPropertyException:无此类属性:类的驱动程序

问题: 如果我只是将所有代码从JSR223 Sampler1复制到JSR223 Sampler2并更改目标url,则url正在打开,但是方式不正确-每次启动新的浏览器实例时都会启动,并且我无法获得真实的响应时间(对于driver.get(“ url “”),因为结果提供了Sampler工作的时间,其中包括驱动程序初始化,启动新的浏览器实例,并且需要花费几秒钟的时间...

请提出任何想法,如何解决此问题?要在1个浏览器实例中获取所有请求,并在JSR223 Sampler2中仅对browser.get(“ url”)获得真实的响应时间? 感谢您的帮助。

解决方法

  1. 在第一个JSR223采样器中,您需要将driver实例存储到JMeter Variables中,例如:

    vars.putObject("driver",driver)
    

    它应该是脚本的最后一行

  2. 在第二个JSR223采样器中,您需要从JMeter变量获取driver实例,例如:

    driver = vars.getObject("driver")
    

    它应该是脚本的第一行

varsJMeterVariables类实例的简写,有关所有可用函数的信息,请参阅JavaDoc;有关{j3eter}的JMeter API简写的更多信息,请参见Top 8 JMeter Java Classes You Should Be Using with Groovy文章。

P.S。与执行vars之类的函数时应遵循的driver.get()相同的方法:

driver.get("https://" + vars.get("url"))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。