移动设备在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"))

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...