在JMeter中,我在选择groovy脚本语言的JSR223采样器中使用了下面的代码。
我想在GUI级别测量流中不同自定义用户操作所花费的时间。我正在考虑通过将下面的代码拆分到不同的JSR223采样器,然后阅读每个示例执行所花费的时间来实现这一点。
我只是不知道如何将初始WebDriver对象示例从一个采样器传递到另一个采样器,以便我可以在相同的浏览器和用户流上继续执行一些操作。
我将非常感谢任何人能提供的帮助。
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.support.ui.WebDriverWait;
import java.time.Duration
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.By;
// webdrivermanager-5.3.3-fat.jar is in jmeter lib folder
io.github.bonigarcia.wdm.WebDriverManager.chromedriver().setup()
ChromeOptions options = new ChromeOptions().setAcceptInsecureCerts(true)
WebDriver driver = new ChromeDriver(options)
def wait = new WebDriverWait(driver, Duration.ofSeconds(5))
//1 sample start
driver.get('https://google.com/')
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(".//button/div[contains(string(), 'Accept all')]")))
//1 sample end
//2 sample start
ACCEPTALL_BUTTON = driver.findElement(By.xpath(".//button/div[contains(string(), 'Accept all')]"))
ACCEPTALL_BUTTON.click()
SEARCH_TEXTBOX = driver.findElement(By.xpath("//textarea[@title ='Search']"))
SEARCH_TEXTBOX.sendKeys("test")
SEARCH_BUTTON = driver.findElement(By.xpath("//div/div[4]/center//input[@value ='Google Search']"))
//2 sample end
//3 sample start
SEARCH_BUTTON.click()
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("result-stats")))
//3 sample end
driver.quit()
1条答案
按热度按时间yeotifhr1#
将WebDriver的示例放入JMeterVariables,而不是
driver.quit()
,如下所示:然后在另一个JSR 223 Sampler中,您将能够恢复它:
更多信息:
您还可以看看WebDriver Sampler,它在线程组开始时示例化WebDriver,然后关闭它,然后虚拟用户执行完成。它也适用于执行> 1个线程。