Мне нужно загрузить тестирование веб-сайта, который выполняет объекты XHR.
нормальное нагрузочное тестирование не может быть применено в этом случае, так как нагрузочное тестирование ищет стороны сервера, и меня интересует клиентская сторона.
единственное, что мне нужно для параметризации - это имя пользователя для одновременной работы скрипта
Я использовал Katalon Recorder для получения кода автоматизации в виде JUnit, затем ввел его в селен, затем экспортировал в виде файла jar и использовал его в Jmeter.
код работает для одного пользователя, но я не могу придумать, как запустить скрипт одновременно
пакет приборной панели;
import static org.junit.Assert.fail;
import java.util.concurrent.TimeUnit;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.NoAlertPresentException;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
public class Testpage {
private WebDriver driver;
private String baseUrl;
private boolean acceptNextAlert = true;
private StringBuffer verificationErrors = new StringBuffer();
@Before
public void setUp() throws Exception {
System.setProperty("webdriver.chrome.driver", "Path/To/chromedriver.exe");
WebDriver driver = new ChromeDriver(options);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
@Test
public void testDashboard() throws Exception {
driver.get("https://test.com/newlogin");
driver.findElement(By.id("UserName")).clear();
driver.findElement(By.id("UserName")).sendKeys("Username");
driver.findElement(By.id("Password")).clear();
driver.findElement(By.id("Password")).sendKeys("Password!");
driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='LOGIN'])[1]/following::input[3]")).click();
driver.get("https://test.com");
for (int second = 0;; second++) {
if (second >= 60) fail("timeout");
try { if (isElementPresent(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Italy'])[3]/following::td[4]"))) break; } catch (Exception e) {}
Thread.sleep(1000);
}
driver.get("https://test.com/1");
for (int second = 0;; second++) {
if (second >= 60) fail("timeout");
try { if (isElementPresent(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Guest_Arrivals_CY'])[2]/following::span[1]"))) break; } catch (Exception e) {}
Thread.sleep(1000);
}
driver.get("https://test.com/2");
for (int second = 0;; second++) {
if (second >= 60) fail("timeout");
try { if (isElementPresent(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Nov 18'])[1]/following::div[4]"))) break; } catch (Exception e) {}
Thread.sleep(1000);
}
driver.get("https://test.com/3");
for (int second = 0;; second++) {
if (second >= 60) fail("timeout");
try { if (isElementPresent(By.cssSelector("#kSXbjj > svg"))) break; } catch (Exception e) {}
Thread.sleep(1000);
}
driver.get("https://test.com/4");
for (int second = 0;; second++) {
if (second >= 60) fail("timeout");
try { if (isElementPresent(By.cssSelector("#tGPUB > svg > g > text"))) break; } catch (Exception e) {}
Thread.sleep(1000);
}
}
@After
public void tearDown() throws Exception {
driver.quit();
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) {
fail(verificationErrorString);
}
}
private boolean isElementPresent(By by) {
try {
driver.findElement(by);
return true;
} catch (NoSuchElementException e) {
return false;
}
}
private boolean isAlertPresent() {
try {
driver.switchTo().alert();
return true;
} catch (NoAlertPresentException e) {
return false;
}
}
private String closeAlertAndGetItsText() {
try {
Alert alert = driver.switchTo().alert();
String alertText = alert.getText();
if (acceptNextAlert) {
alert.accept();
} else {
alert.dismiss();
}`enter code here`
return alertText;
} finally {
acceptNextAlert = true;
}
}
}
в своем текущем состоянии страницы загружаются консервативно для одного пользователя, как только элемент на странице загружается, он перемещается на следующую страницу и т. Д.