Привет коллеги, проблема с запуском тестов в разных контейнерах на селеноид(при последовательном запуске все отрабатывает отлично)
фрагменты кода:
настройка параллельного запуска только в мавен:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
<configuration>
<parallel>methods</parallel>
<useUnlimitedThreads>true</useUnlimitedThreads>
</configuration>
Раннер клас - 1, там только настройка селеноида
//Configuration.timeout = 10000;
// Configuration.remote = “http://localhost:4444/wd/hub”;
//
// DesiredCapabilities capabilities = new DesiredCapabilities();
// capabilities.setBrowserName(“chrome”);
// capabilities.setVersion(“86.0”);
// capabilities.setCapability(“enableVNC”, true);
// capabilities.setCapability(“enableVideo”, true);
// capabilities.setCapability(“enableLog”, true);
// Configuration.browserCapabilities = capabilities;
открывается 3 контейнера при паралельном запуске(по 1 на фичу)
(1 тест всегда отрабатывают, остальные падают с ошибкой элемент нот фаунд)
так выглядит пейдж обжект:
@Getter
@Slf4j
public class MainPage extends AbstractPage {
@FindBy(xpath = "//span[text()='бла бла']") private SelenideElement zadaniyaNaVidachu;
так выглядит абстракт пейдж:
public abstract class AbstractPage {
public synchronized SelenideElement get(String nameOfElement) {
Class<?> clazz = getClass();
for (Field field : clazz.getDeclaredFields()) {
if (field.getName().equals(nameOfElement)) {
try {
field.setAccessible(true);
return (SelenideElement) field.get(this);
} catch (IllegalAccessException e) {
log.error("no such element" + e);
}
}
}
throw new IllegalArgumentException();
}
класс шагов:
public static Map<String, AbstractPage> pages = new HashMap<>();
@Пусть("^была открыта страница \"([^\"]*)\"$")
public void openPage(String url) {
open(url);
getWebDriver().manage().window().maximize();
//preload all pages
pages.put("MainPage", page(MainPage.class));
}
пример шага нажатия на кнопку
@И("пользователь сделал клик на {string} на странице {string}")
public void пользовательСделалКликНаНаСтранице(String elementName, String page) {
AbstractPage abstractPage = pages.get(page);
if (abstractPage != null) {
abstractPage.get(elementName).waitUntil(Condition.exist, 60000);
abstractPage.get(elementName).waitUntil(Condition.visible, 60000);
abstractPage.get(elementName).click();
} else {
log.error("no such page " + page);
}
}
вывод при паралельном запуске:
[INFO]
[INFO] Results:
[INFO]
[ERROR] Failures:
[ERROR] Element not found {By.xpath: //label[contains(@data-testid, ‘Label’)][text() = ‘Статус обработки’]/…/following-sibling::div}
Expected: exist
Timeout: 60 s.
Caused by: NoSuchElementException: no such element: Unable to locate element: {“method”:“xpath”,“selector”:“//label[contains(@data-testid, ‘Label’)][text() = ‘Статус обработки’]/…/following-sibling::div”}
[ERROR] Errors:
[ERROR] null
[INFO]
[ERROR] Tests run: 3, Failures: 1, Errors: 1, Skipped: 0