Да, псевдоэлементы не могут быть расположены путями или CSS локаторами. Однако, в качестве альтернативы, вы можете извлечь внутренний HTML родительского элемента и проверить, содержит ли он текст «:: after».
Есть два способа сделать это. Для приведенного выше сценария,
WebElement element = browser.driver.findElement(By.className('parent-class'))
String innerHTMLText = element.getAttribute('innerHTML');
if (innerHTMLText.contains("::after")){
// Bingo !!
}
Или еще
WebElement element = browser.driver.findElement(By.className('parent-class'))
JavascriptExecutor js = (JavascriptExecutor)driver;
String innerHTMLText = js.executeScript("return arguments[0].innerHTML;", element);
if (innerHTMLText.contains("::after")){
// Bingo !!
}
РЕДАКТИРОВАТЬ 1
Если вам нужно проверить, имеет ли только тег div псевдоэлемент, который вы может получить HTML тега span, получить HTML родительского тега, удалить внутренний тег HTML из тега span из HTML родительского тега. Проверьте.
String divHTMLText = browser.driver.findElement(By.className('parent-class')).getAttribute('innerHTML');
String spanHTMLText = browser.driver.findElement(By.className('child-class')).getAttribute('innerHTML');
// replace all the whitespaces first for good measure
divHTMLText = divHTMLText.replaceAll("\\s+","")
spanHTMLText = spanHTMLText.replaceAll("\\s+","")
// replace the child html from parent's html with empty. which leaves us with the parent html code.
String divOnlyHTML = divHTMLText.replace(spanHTMLText, "");
if (divOnlyHTML.contains("::after")){
// Bingo !!
}