Всем утро!
Собственно есть 2 проблемы ошибка - 'StaleElementReferenceException: stale element reference: element is not attached to the page document и понимание как сделать нормально
В качестве результата теста следует убедится, что элемент удален
if (!$(byText(name)).isDisplayed()) {
$(byTitle("Home")).click();
}
Или, для другого теста, что пользователь не залогинился и ему отобразился нужный текст
if (!$("#back-home").isDisplayed()) {
errorMessage.shouldBe(visible);
}
Но сказали, что так делать нельзя.
Как тогда стоит проверять, что нет элемента?
Это кусок из самого теста
@BeforeMethod
public void createBeforeDeleting() {
LoginPage page = new LoginPage();
page.clickOnLoginButton();
page.enterUserInfo("r@bk.ru", "111111");
page.agreeTOLogin();
Configuration.timeout=1000;
open(".com/@izyaz");
AddCollection newcollection = new AddCollection();
newcollection.buttonAddCollection();
newcollection.clickOnCreateCollection();
newcollection.setCollectionTitle("Test collection");
newcollection.createCollection();
open(".com/@izyaz/collections");
Configuration.timeout=1000;
}
@Test
public void deleteCollection() {
DeleteCollection delete = new DeleteCollection();
delete.findCollection();
delete.deleteCollection();
ResultDeleteCollection result = delete.deleteCollection();
result.resultDeleteCollection("Test collection");
}
Это шаги для удаления в другом классе:
public class DeleteCollection extends ResultDeleteCollection{
public SelenideElement
titleCollection = $(byText("Test collection")),
editCollectionButton = $(byCssSelector("a[href*='edit_collection']")),
deleteCollectionButton = $(byText("Delete Collection")),
deleteButton = $(byText("Delete"));
public DeleteCollection findCollection() {
//найти коллекцию
titleCollection.shouldBe(Condition.visible).click();
//перейти на страницу редактирования
editCollectionButton.waitUntil(Condition.visible,9000).click();
return this;
}
public DeleteCollection deleteCollection() {
deleteCollectionButton.waitUntil(Condition.visible, 9000).click();
deleteButton.waitUntil(Condition.visible, 5000).click();
return this;
}
}
И сам результат удаления
public class ResultDeleteCollection {
public ResultDeleteCollection resultDeleteCollection(String name) {
open("h.com/@izyaz/collections");
if (!$(byText(name)).isDisplayed()) {
$(byTitle("Home")).click();
}
return this;
}
}
Заранее спасибо