Проблема заключается в том, что непонятно почему, при использовании JBrowser для тестов совместно с selenide, мои тесты падают на простом коде, при этом в браузерах Chrome и Firefox все работает правильно.
У меня есть такой тест:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = EditorConfig.class)
@EnableAutoConfiguration
public class MySimpleTest {
@LocalServerPort
int port;
@Before
public void setUp() {
Configuration.baseUrl = "http://localhost:" + port;
Configuration.browser = System.getProperty("browser", WebDriverRunner.JBROWSER);
}
@Test
public void campaignsExist() {
open("/");
$("#btn-add").click();
$("#campaignNameInput").setValue("TestName");
$(By.name("campaignStartDate")).find(tagName("input")).setValue("25.11.2018").click();
$(By.name("campaignExpirationDate")).find(tagName("input")).setValue("30.11.2018").click();
$("#btn-finish").click();
$$(By.xpath("//span[@class='campaign-data']")).shouldHaveSize(2);
$$(By.xpath("//span[@class='campaign-data']")).first().shouldHave(text("TestName (с 25.11.2018 до 30.11.2018)"));
}
}
Вся проблема в том, что тест свалился с такой ошибкой:
Element not found {#campaignNameInput}
Expected: visible
Timeout: 4 s.
Caused by: NoSuchElementException: Element not found or does not exist.
at com.codeborne.selenide.impl.WebElementSource.createElementNotFoundError(WebElementSource.java:34)
at com.codeborne.selenide.impl.ElementFinder.createElementNotFoundError(ElementFinder.java:100)
at com.codeborne.selenide.impl.WebElementSource.checkCondition(WebElementSource.java:62)
Но это поле существует, и тест работает в Chrome и Firefox!
В pom.xml я добавил следующие зависимости:
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-api</artifactId>
<version>3.141.59</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.codeborne</groupId>
<artifactId>selenide</artifactId>
<version>5.0.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.machinepublishers</groupId>
<artifactId>jbrowserdriver</artifactId>
<version>1.0.1</version>
<scope>test</scope>
</dependency>
Подскажите, что не так и в какую сторону копать?