Selenium WebDriver получает текст из свойства CSS "content" в элементе:: перед псевдоэлементом

6 dfreer [2015-01-31 00:28:00]

Я пытаюсь проверить текст "Предоставленная информация недействительна или неполна". отображается с помощью Selenium/WebDriver в Java.

У меня есть следующий HTML:

<div id="validationError">
    <ul>
        <li>Required: Server Name</li>
        <li>Required: Receiving Port</li>
    </ul>
</div>

со следующим кодом CSS:

#validationError:before {
    content: 'The information provided is either invalid or incomplete.';
}

Вот мой текущий код Java:

WebElement errorBox = browser.findElement(By.id("validationError"));
Assert.assertNotNull("Could not find validation errors", errorBox);

System.out.println("Error Explanation: " + error.getCssValue("content") + "\n");

List<WebElement> errorList = errorBox.findElements(By.tagName("li"));
for (WebElement error : errorList) {
    System.out.println("Error: " + error.getText());
}

System.out.println("\nError Full Text: " + errorBox.getText());

Это мой вывод вышеприведенного кода:

Error Explanation:

Error: Required: Server Name
Error: Required: Receiving Port

Error Full Text: Required: Server Name
Required: Receiving Port

Я не могу найти способ проверить текст "Предоставленная информация недействительна или неполна". отображается. Вызов getText() в веб-элементе также не возвращает ожидаемую строку, но отобразит любой другой нормальный текст внутри этого div. Любые идеи?

css selenium webdriver


2 ответа


17 nilesh [2015-02-01 20:45:00]

Я не уверен на 100%, если WebDriver может получить для вас содержимое псевдоэлементов. Я думаю, вам нужно будет использовать Javascript. Ниже я тестировал.

String script = "return window.getComputedStyle(document.querySelector('#validationError'),':before').getPropertyValue('content')";
JavascriptExecutor js = (JavascriptExecutor)driver;
String content = (String) js.executeScript(script);
System.out.println(content);

Это должно печатать

The information provided is either invalid or incomplete.

-1 Praveen [2016-07-08 17:00:00]

Ну.. Все, что нужно для webdriver, это всего лишь допустимый xpath, чтобы найти веб-элемент на dom. И существует много способов исправить допустимый Xpath.

Мы также можем использовать маркеры типа

  • потомок::
  • ребенок::
  • предок::
  • содержит::

    Пример://div [*/text() = 'Credit Card']/descendant:: input [@id = 'cardNumber']

Вы можете сослаться на этот сайт для получения дополнительной информации о том, как их использовать в xpath..