SampleResult не работает должным образом с сэмплером JSR223 в JMeter
Я работал с сэмплером JSR223 с Java в качестве выбранного языка. Моя проблема в том, что когда я использую функции SampleResult, SampleResult.sampleStart/End()
, Ошибка SampleResult: sampleStart called twice
отображается.
Сценарий:
/*All import statements*/
setStrictJava(false);
public static DesiredCapabilities desCapabilities;
public static WebDriver driver = null;
public static String IEDriver = "Chrome";
if (IEDriver.equalsIgnoreCase("Chrome")) {
desCapabilities = DesiredCapabilities.chrome();
desCapabilities.setPlatform(Platform.ANY);
desCapabilities.setBrowserName("Chrome");
ChromeOptions options = new ChromeOptions();
options.addArguments(new String[] {"--start-maximized"});
System.setProperty("webdriver.chrome.driver","D:/Bala/Automation/Chrome/chromedriver.exe");
desCapabilities.setCapability("chromeOptions", options);
driver = new ChromeDriver(desCapabilities);
Thread.sleep(20000);
driver.get("http://google.com");
SampleResult.setSampleLabel("Login Page Load Time");
SampleResult.setSuccessful(true);
SampleResult.sampleStart();
JavascriptExecutor js = (JavascriptExecutor)driver;
while(true){
log.info("Started while loop...");
Boolean isJSLoaded = js.executeScript("return document.readyState;", new Object[] {}).toString().equals("complete");
Boolean isAjaxLoaded = js.executeScript("return window.jQuery != undefined && jQuery.active == 0 && window.$.active", new Object[] {}).equals("0");
if(!(isJSLoaded) && !(isAjaxLoaded)){
break;
}
}
log.info("Ended while loop...");
(new WebDriverWait(driver, 60)).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@id='googleHome']")));
SampleResult.sampleEnd();
return driver.getWindowHandle();
} else if {
/*code for IE browser*/
}
Это работает должным образом, когда оно дано вне условия 'IF'.
Ниже приведены вещи, которые я пробовал до сих пор:
Создайте конструктор для SampleResult и вызовите его методы: это не дало мне ОШИБКИ, вместо этого время записывается с начала потока.
SampleResult result = new SampleResult();
result.setSampleLabel("Login Page Load Time2");
result.setSuccessful(true);
result.sampleStart();
Thread.sleep(3000);
result.sampleEnd();
Как начать запись времени сразу после вызова driver.get()?
Как использовать SampleResult внутри условия 'IF'?
1 ответ
Вам не нужно создавать конструктор для SampleResult, он уже представлен как предопределенная переменная.
Вам также не нужно звонить sampleStart()
а также sampleEnd()
функции, они рассчитываются автоматически в зависимости от продолжительности вашего сэмплера, поэтому вам нужно изменить свой код, например:
SampleResult.setSampleLabel("Login Page Load Time2");
SampleResult.setSuccessful(true);
Thread.sleep(3000);
Дополнительная информация: Apache Groovy - почему и как вы должны его использовать