Для начала xpath создаются при разработке / тестировании. инженеры (SDET). Итак, создание эффективного xpath в основном зависит от инженеров-разработчиков / тестировщиков. Оптимизированный xpath должен работать идентично в случае < sizescross browser strong>, а также кросс-платформенный тесты.
getText ()
getText()
получает видимый (т.е. не скрытый CSS) текст этого элемента, включая подэлементы, т.е. возвращает видимый текст элемента.
java.lang.String getText()
Следовательно, вам не нужно явно приводить возвращаемый результат через toString()
, и вы можете удалить его. Итак, ваша эффективная строка кода будет:
System.out.print(driver.findElement(By.xpath("//*[@id='error-box']/ul/li")).getText());
Спецификация
Согласно проекту редактора WebDriver-W3C:
Команда «Получить текст элемента» предназначена для возврата текста элемента «в том виде, в каком он был обработан». Отображаемый текст элемента также используется для поиска элементов по тексту их ссылки и частичному тексту ссылки.
Одним из основных вкладов в эту спецификацию был проект Selenium с открытым исходным кодом. Это было широко распространено до написания этой спецификации, и поэтому определило ожидания пользователей относительно того, как должна работать команда Get Element Text. Таким образом, представленный здесь подход известен как ошибочный, но обеспечивает наилучшую совместимость с существующими пользователями.
Почему изменяется xpath элемента?
Не все браузеры используют один и тот же механизм рендеринга или правила рендеринга, что оказывается основным препятствием для веб-разработчиков, и это не то, что, похоже, исчезнет в ближайшее время.
Решение
Общее решение этой проблемы - использовать css по возможности, поскольку браузеры лучше всего соответствуют строгим правилам таблицы стилей. Пара примеров:
Использование декларации HTML ‹! DOCTYPE›: все документы HTML должны начинаться с символа ‹! DOCTYPE ›декларация. Объявление не является тегом HTML. Это information
для браузера о том, какой тип документа ожидать. В HTML 5 объявление выглядит так:
Использование сброса CSS: цель сброса таблицы стилей - уменьшить несогласованность действий браузера. например, высоту строки по умолчанию, поля и размер шрифта заголовков и т. д.
Использование clearfix: полезный метод очистки плавающих точек.
Этот вариант использования
В идеале, чтобы извлечь желаемый текст, вам нужно вызвать WebDriverWait для visibilityOfElementLocated()
, и вы можете использовать следующий Стратегия поиска:
System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='error-box']/ul/li"))).getText());
person
DebanjanB
schedule
14.12.2020
placeholder
в некоторых элементах (HTML5) - ‹IE9 будет отображать его как отдельный элемент, тогда как другие - нет. Таким образом, ваш XPath должен будет учесть разницу - требуется дополнительная информация !!! - person Arran   schedule 14.04.2014