t.me/atinfo_chat Telegram группа по автоматизации тестирования

как справиться с псевдоэлементами before в Selenium

page-factory
java
selenium
webdriver
Теги: #<Tag:0x00007fb2f899bf30> #<Tag:0x00007fb2f899bd28> #<Tag:0x00007fb2f899bb70> #<Tag:0x00007fb2f899b968>

(Ольга Лутова) #1

Мне необходимо добиться нажатия на кнопку закрытия

Я пыталась нажать самым обычным образом, однако оказалось, что там есть некоторый псевдоэлемент before и мне необходимо нажать на span, однако он не активный.

Вот код HTML

<a class="delete-link link-inline" href="javascript::" onlock="showDeletePackageDialod(5836,'Test52617.0')" title="Delete package"
::before
<span id="deletePackageElement" style="display:none"</span>
</a>

При помощи page factory pattern написала в классе CheckList метод

private By deleteLocator = By.cssSelector("#deletePackageElement");
public CheckList deleteLocator() {
   driver.findElement(deleteLocator).click();
   return this;
}

После чего в классе MainPage написала метод

@FindBy(css = "#deletePackageElement")
private WebElement deleteLocator;

public CheckList deleteLocator() throws InterruptedException {
   deleteLocator.click();
   return new CheckList(driver);
}

А затем вызвала его в другом методе. Мой предположения, скорее всего я как-то не правильно объявляю локатор, но как иначе я придумать не могу.


(Сергей Кузьмин) #2

Olga_Lutova pseudoelements это стили а не настоящие елементы ! стучать по ним нечего и все равно не получится - наверное надо атрибут у span#deletePackageElement слелать видимым и он кликнется


(Ольга Лутова) #3

А как бы вы посоветовали его сделать видимым?


(Dmitry Morozov) #4

Видимо перед кликом удалять атрибут display:none из полученного элемента или можете получить координаты элемента и попробовать кликнуть в это место на экране. Подходов много, уверен если проявить находчивость какой-то да подойдет


(Salciuc Vitalie) #5

нет толку зделать иго видемым если он скрыт как-бы ты тестируеш а не делаеши так что-бы тесты прошли (но если сильно надо можно ваздействовать над DOM через js ) но как-бы это неправельно если button не отображается , а он должен быти там виден это баг и твоя задача сообщить об этом а не поокрывать это ( это чисто мое мнение )