- mobile/
- Mobile 移动设备在JMeter中使用JSR223请求仿真-没有这样的属性:类的驱动程序
Mobile 移动设备在JMeter中使用JSR223请求仿真-没有这样的属性:类的驱动程序
Mobile 移动设备在JMeter中使用JSR223请求仿真-没有这样的属性:类的驱动程序,mobile,jmeter,webdriver,performance-testing,jsr223,Mobile,Jmeter,Webdriver,Performance Testing,Jsr223,场景:
打开主页,点击“接受所有Cookies”(JSR223采样器1在一次性控制器中)
打开参数化URL集中的页面(另一个控制器中的JSR223 Sampler2)
JSR223-Sampler1主页代码:
导入org.apache.jmeter.samplers.SampleResult;进口
org.openqa.selenium.chrome.ChromeOptions;进口
org.openqa.selenium.chrome.ChromeDriver;进口
org.openqa.se
场景:
打开主页,点击“接受所有Cookies”(JSR223采样器1在一次性控制器中)李>
打开参数化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\u path”)”
Map mobileEmulation=new HashMap();
mobileEmulation.put(“userAgent”、“vars.get”(“userAgent”));
Map chromeOptions=new HashMap();
chromeOptions.put(“移动模拟”,移动模拟);色度学
选项=新的色度选项();
选项。设置实验选项(“移动模拟”,移动模拟);
ChromeDriver驱动程序=新的ChromeDriver(选项)
驱动程序。获取(“https://vars.get(“主页”);WebDriverWait wait=new
WebDriverWait(driver,20岁);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(“xpath”));
findElement(By.xpath(“xpath”)).click();
log.info(driver.getTitle())
JSR223-Sampler2 URL集合中任何页面的代码:
get(“https://${url}”)
错误消息:
响应消息:javax.script.ScriptException:groovy.lang.MissingPropertyException:无此类属性:类的驱动程序
问题:
如果我只是将所有代码从JSR223 Sampler1复制到JSR223 Sampler2,并更改目标url,url会打开,但会以不恰当的方式打开—每次启动新的浏览器实例时,我都无法获得实际的响应时间(仅针对driver.get(“url”),因为结果提供了采样工作的时间,其中包括驱动程序初始化,新浏览器实例启动,需要几秒钟
你能提出一些想法吗?如何解决这个问题?要在1个浏览器实例中获取所有请求,并在JSR223 Sampler2中仅为browser.get(“url”)获取所有请求的实际响应时间?
谢谢你的帮助
在第一个JSR223采样器中,您需要将驱动程序
实例存储到如下位置:
它应该是脚本的最后一行
在第二个JSR223采样器中,您需要从JMeter变量中获取驱动程序实例,如:
driver = vars.getObject("driver")
它应该是脚本的第一行
vars
是类实例的简写,有关JSR223测试元素可用的JMeter API简写的更多信息,请参阅JavaDoc中的所有可用函数和文章
另外,执行driver.get()
函数时,您应该遵循使用vars
的相同方法,如:
driver.get("https://" + vars.get("url"))
德米特里,谢谢你!最后,它按照预期的方式工作。非常感谢你的帮助!
driver.get("https://" + vars.get("url"))