如何解决移动设备在JMeter中使用JSR223请求仿真-无此属性:类
场景:
主页的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驱动程序=新的ChromeDriver(选项); 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());
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”)获得真实的响应时间? 感谢您的帮助。
解决方法
-
在第一个JSR223采样器中,您需要将
driver
实例存储到JMeter Variables中,例如:vars.putObject("driver",driver)
它应该是脚本的最后一行
-
在第二个JSR223采样器中,您需要从JMeter变量获取
driver
实例,例如:driver = vars.getObject("driver")
它应该是脚本的第一行
vars
是JMeterVariables类实例的简写,有关所有可用函数的信息,请参阅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 举报,一经查实,本站将立刻删除。