Позиционирование элемента страницы является наиболее важной вещью в автоматизации, а Selenium Webdriver предоставляет много методов для позиционирования элементов. Тестеры должны быть опытными в различных методах позиционирования. Самый простой и самый стабильный метод позиционирования используется.
Чтение содержимого
Автоматизированные этапы тестирования
Во время автоматического тестирования проверьте обычную работу элементов страницы программы
1. Найдите элемент веб -страницы и назначьте его объекту хранения (WebElement)
2. Операции на объектах, которые хранят элементы страницы, такие как: нажмите на ссылку, введите символы в поле ввода и т. Д.
3. Убедитесь, что элементы на странице соответствуют ожиданиям
Через эти три шага мы можем завершить работу элемента страницы, и поиск элемента страницы является очень важным шагом. Элемент страницы не может быть найден, и это не может быть сделано позже
Практическая сложность технологии веб -страницы затрудняет поиск большого количества элементов страниц. Люди часто не знают, как его найти.
Полный метод местоположения
Определите элемент веб -страницы, используя функцию FindElement объекта WebDriver
Используйте функцию Findelements, чтобы найти несколько элементов страницы
Целевые элементы страницы должны храниться с использованием объекта WebElement для последующего использования
Обычно используемые методы определения местоположения элементов страницы следующие, отсортируемые по рекомендации
Метод позиционирования | Пример реализации языка Java |
Позиционирование ID | Driver.findelement (by.id ("значение ID")); |
позиционирование имени | Driver.findelement (by.name ("value")); |
Все текстовое позиционирование ссылок | Driver.findelement (by.linkText ("весь текст ссылки")); |
Некоторое текстовое позиционирование ссылок | Driver.findelement (by.partiallinktext ("частичный текст ссылки")); |
позиционирование CSS | Driver.findelement (by.cssselector ("CSS Expression")); |
xpath позиционирование | Driver.findelement (by.xpath ("xpath Expression")); |
Позиционирование имени класса | Driver.findelement (by.classname ("атрибут класса")); |
Tagname Tag Targeting Targeting | Driver.findelement (by.tagname ("Tagname")); |
JQuery Метод | Js.executcript ("return jQuery.find (" jQuery Expression ")") |
Как найти
При использовании селена WebDriver для позиционирования элементов метод FindElement или Findelements обычно используется для объединения класса для возврата ручек элементов, чтобы найти элементы
Метод findelement () возвращает элемент. Если не найдено, будет брошено исключение.
Метод Findelements () возвращает несколько элементов. Если не найдено, будет возвращено пустое массив, и не будет исключено никаких исключений.
Как выбрать метод позиционирования
Стратегия состоит в том, чтобы выбрать простой и стабильный метод позиционирования.
1. Когда элемент страницы имеет атрибут идентификатора, попробуйте использовать ID для его поиска. Если нет, выберите другой метод позиционирования
2. CSSSelector выполняется быстро, рекомендуется
3. При позиционировании гиперссылок вы можете рассмотреть LinkText или PartialLinkText: но следует отметить, что текст часто изменяется, поэтому не рекомендуется использовать его.
4. XPath имеет самую мощную функцию. Скорость выполнения была медленной в то время, потому что вам нужно было найти весь DOM, поэтому постарайтесь использовать его как можно меньше. Когда на самом деле нет пути, используйте XPath
Найдите элементы по id: by.id ()
Наиболее рекомендуемый способ найти элементы через идентификатор элементов страницы. W3C Standard рекомендует разработчикам предоставлять уникальные атрибуты ID для каждого элемента страницы.
Как только элемент получил уникальный атрибут ID, легко найти элемент, когда мы делаем автоматическое тестирование. Идентификатор элемента используется в качестве предпочтительного атрибута идентификации, потому что это самая быстрая стратегия идентификации.
Взяв домашнюю страницу Baidu, в качестве примера, HTML -код поле поиска следующим образом, его идентификатор - KW
<input type = "text" autocomplete = "off" maxlength = "100" id = "kw" name = "wd">
Пример HTML -кода для элемента кнопки поиска «Baidu» выглядит следующим образом, его идентификатор SU
<input type = "отправить" id = "su" value = "baidu">
Пример кода Java для поиска элементов по ID в селене/Webdriver заключается в следующем
WebDriver Driver = New FirefoxDriver (); Driver.get ("http://www.baidu.com"); WebElement SearchBox = Driver.Findelement (by.id ("kw")); Searchbox.sendkeys («Парк маленького танкового блога»); WebElement searchbutton = Driver.findelement (by.id ("su")); searchbutton.submit (); Driver.close ();Найдите элементы по имени: by.name ()
В качестве примера получение поля для домашней страницы Douban.com, код HTML его полевого окна следующим образом, его название: Q
<input type = "text" autocomplete = "off" name = "q" placeholder = "книги, фильмы, музыка, группы, станции, участники" size = "12" maxlength = "60">
Код Java в Webdriver для поиска поле поиска на домашней странице Douban через имя выглядит следующим образом:
WebDriver Driver = New FirefoxDriver (); Driver.get ("http://www.douban.com"); WebElement SearchBox = Driver.Findelement (by.name ("q")); Searchbox.sendkeys ("маленький танк"); searchbox.submit ();Найдите элементы по Tagname: by.tagname ()
При поиске элементов через Tagname будет возвращено несколько элементов. Следовательно, Findelements () требуется.
WebDriver Driver = New FirefoxDriver (); Driver.get ("http://www.cnblogs.com"); Список <webElement> кнопки = driver.findelements (by.tagname ("div")); System.out.println ("Кнопка:" + buttons.size ());Примечание. Если вы используете Tagname, вы должны отметить, что Tagname многих элементов HTML одинакова.
Например, радиосвязь, флажок, текстовое поле, поле пароля. Эти теги элемента все ввод. В настоящее время только Tagname не может точно получить нужные элементы, которые мы хотим. Вам также необходимо объединить атрибут типа, чтобы отфильтровать элементы, которые мы хотим.
WebDriver Driver = New FirefoxDriver (); Driver.get ("http://www.cnblogs.com"); Список <webElement> кнопки = driver.findelements (by.tagname ("input")); for (webElement webElement: кнопки) {if (webElement.getAttribute ("type"). equals ("text")) {System.out.println ("Ввод текст:" + webElement.getText ()); }}Найдите элементы по имени
Принимая поиск по домашней странице Taobao в качестве примера, HTML -код его полевого окна заключается в следующем:
<input autocomplete = "off" autofocus = "true" accesskey = "s" aria-label = "пожалуйста, введите текст поиска" name = "q" id = "q" aria-haspopup = "true" aria-combobox = "list" rol = "combobox" x-webkit-грамматика = "встроенная: трансляция" tabindex = "0">
Код образца Java выглядит следующим образом
WebDriver Driver = New FirefoxDriver (); Driver.get ("http://www.taobao.com"); Thread.sleep (15000); WebElement SearchBox = Driver.Findelement (by.className ("Search-Combobox-Input")); searchbox.sendkeys ("Down Jacket"); searchbox.submit (); Примечание. При использовании ClassName для поиска элементов вы иногда сталкиваетесь
Найти элементы по LinkText by.linkText ();
Положение элементов непосредственно через текстовую информацию о гиперссылке: например,
<a href = "https://passport.baidu.com/v2/?login&tpl=mn&u=http%3a%2f%2fwww.baidu.com%2f" name = "tj_login" onclick = "return false;
HTML -код выглядит следующим образом
WebDriver Driver = New FirefoxDriver (); Driver.get ("http://www.baidu.com"); WebElement loginlink = Driver.findelement (by.linktext ("login")); loginlink.click ();Найдите элементы по partiallinktext ()
Этот метод является расширенной версией предыдущего метода. Если вы хотите соответствовать некоторым ключевым словам, вы можете использовать этот метод для поиска элементов с помощью текста гиперссылки.
HTML -код выглядит следующим образом
WebDriver Driver = New FirefoxDriver (); Driver.get ("http://www.baidu.com"); WebElement loginlink = Driver.findelement (by.partiallinktext ("log")); loginlink.click ();ПРИМЕЧАНИЕ. При использовании этого метода для поиска проблема может быть вызвана тем, что, когда вы не знаете, что гиперссылка содержит «и т. Д.». Метод Findelement только вернет первый найденный элемент, и не будет возвращать все элементы, которые соответствуют критериям.
Если вы хотите получить все элементы, которые соответствуют критериям, вы можете использовать только метод Findelements.
Выше приведено информация о позиционировании элемента Java Selenium. Мы будем продолжать добавлять соответствующую информацию в будущем. Спасибо за вашу поддержку!