Доброе время суток!
такое ощущение, что иногда браузер обрабатывает код быстрее и тест падает на определенном месте, в других случаях все хорошо.
Падает на $(byTitle(“Add to collection”)).click();
Собственно, идет клик на фото, потом открывается новое окно и там уже идет поиск кнопки с тайтлом "Add to collection
public class Collection {
@BeforeTest
public void StepZero() {
Configuration.browser = "chrome";
open("https://unsplash.com");
$(byLinkText("Login")).click();
$("#user_email").setValue(email);
$("#user_password").setValue(password).pressEnter();
}
@Test
public void StepOne(){
$(byCssSelector("a[href*='/@']")).click();
$("[data-test='photo-component']").shouldBe(enabled).click();
$(byTitle("Add to collection")).click();
$(withText("Create a new collection")).click();
$(byId("collection_title")).setValue(name);
$(byId("collection_description")).setValue(description);
$(byId("collection_privacy")).setSelected(true);
$(withText("Create collection")).click();
}
}
Element not found {[title=‘Add to collection’]}
Expected: visible
Timeout: 4 s.
Caused by: NoSuchElementException: no such element: Unable to locate element: {“method”:“css selector”,“selector”:"[title=‘Add to collection’]"}
Может стоит прописать ожидание появление данного окна? или как решить это иначе?
Спасибо.
добавь ожидание появления кнопки , например проверить или она отображается .isDisplayed() если нет то .sleep()1 секунду и так N раз (сколько допустимо) , если не загрузилось - тогда падать.
Хардкодить с .sleep(SECONDS) я бы не стал точно. А вот wait точно бы поставил. Можно использовать wait.until(ExpectedConditions.visibilityofElementLocated(ваш локатор)
Caused by: NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"[title='Add to collection']"}
at com.codeborne.selenide.impl.WebElementSource.createElementNotFoundError(WebElementSource.java:31)
Получается, что есть фото
Чтобы увидеть title и прочее, нужно навести курсор
$("[data-test=‘photo-component’]").shouldBe(enabled).click(); для этого использую этот кусок
После того, как курсор на фото, тогда появляется кнопка Add to collection
Но в коде браузера она выглядит вот так
< div class="_3W6mQ">< a title="Add to collection" class="_1yvXd _1l4Hh _1CBrG _1zIyn xLon9" href="/@testovoi?add_to_collection_view=is_visible">< svg class="_2rdbO _2T3hc" version="1.1" viewBox="0 0 32 32" width="32" height="32" aria-hidden="false" >