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"))