локаторы в селене | Как найти элементы на веб-странице

Если вы хотите узнать самый простой способ поиска элементов на веб-странице, то вы попали в идеальное место. Поиск элементов — это действительно кошмар из-за сложности поиска веб-элементов на веб-странице и их автоматизации. Чтобы упростить эту задачу, мы используем так называемые локаторы в Selenium. В этой статье я дам вам краткий обзор различных типов локаторов вместе с соответствующими примерами.

Что такое локаторы в Selenium?

Локаторы определяются как адрес, который однозначно идентифицирует веб-элемент на веб-странице. Это команда, которая сообщает Selenium IDE, с какими элементами графического интерфейса, такими как текстовое поле, кнопки, флажки и т. д., она должна работать. Поиск правильных элементов графического интерфейса является необходимым условием для создания скрипта автоматизации, но точная идентификация элементов графического интерфейса гораздо сложнее, чем кажется. Иногда вы можете даже работать с неправильными элементами графического интерфейса или вообще без элементов! Следовательно, использование правильного локатора гарантирует, что тесты будут быстрее, надежнее или требуют меньше обслуживания по сравнению с выпусками.

Дерево-Инфографика-768x1066.png

Если вам посчастливилось работать с уникальными идентификаторами и классами, то, как правило, все готово. Но будут времена, когда выбор правильного локатора станет кошмаром из-за сложности поиска веб-элементов на веб-странице.

Поняв это, давайте углубимся и разберемся в различных типах локаторов в Selenium.

Типы локаторов в Selenium

Существует широкий спектр веб-элементов, таких как текстовое поле, идентификатор, переключатель и т. д. Для идентификации этих элементов требуется эффективный и точный подход. Таким образом, можно утверждать, что с увеличением эффективности локатора повысится и стабильность работы скрипта автоматизации.

Картинка1-1-768x299.png

Чтобы точно и точно идентифицировать веб-элементы, селен использует различные типы локаторов. Они следующие:

  • Идентификатор локатора
  • Локатор имени
  • текст ссылки и частичный текст ссылки
  • CSS-селектор
  • XPath

Идентификатор локатора

Самый популярный способ идентифицировать веб-элемент — использовать идентификатор. Идентификаторы считаются самым безопасным и быстрым вариантом поиска и всегда должны быть первым выбором, даже если есть несколько вариантов. Например – Номер сотрудника или Счет, который будет уникальным.

Теперь давайте разберемся с работой локатора ID на примере. Я запущу Google Chrome и перейду к yahoo.com. Здесь я постараюсь найти текстовое поле электронной почты с использованием Идентификационный локатор.

Yahoo-login-page.png

Изучив приведенный выше веб-элемент, вы увидите, что он имеет входной тег и атрибуты, такие как класс и идентификатор. Теперь я буду использовать значение локатора Id, т.е. логин-имя пользователя чтобы найти текстовое поле электронной почты.

iD-locator.png

Давайте посмотрим, как автоматизировать текстовое поле и отправлять в него значения с помощью локатора идентификаторов.

package Edureka;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;
public class Locators {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "C:\\Selenium-java-edureka\\chromedriver_win32\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();
driver.manage().deleteAllCookies();
driver.manage().timeouts().pageLoadTimeout(40, TimeUnit.SECONDS);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get("
driver.findElement(By.id("login-username")).sendKeys("edureka@yahoo.com"); //id locator for text box
WebElement searchIcon = driver.findElement(By.id("login-signin"));//id locator for next button
searchIcon.click();
}

Когда вы запускаете вышеупомянутую программу Java, хром драйвер запустит Google Chrome, перенаправит на почту yahoo, введет адрес электронной почты и перейдет на следующую страницу. Вы можете обратиться к изображению ниже для вывода:

id-следующая-page.png

Я надеюсь, что это дало вам четкое представление о том, как работает локатор идентификаторов в Selenium. Теперь давайте двигаться дальше и понять, как использовать локатор имен.

Локатор имени

Это также эффективный способ найти элемент с атрибутом имени. При этой стратегии будет возвращен первый элемент со значением атрибута имени. Если ни один элемент не имеет соответствующего атрибута имени, то NoSuchElementException будет повышен.

Теперь давайте посмотрим на работу локатора имен на примере. На изображении ниже вы можете видеть, что локатор имен имеет значение, называемое именем пользователя. Разница здесь в том, что вы должны использовать имя вместо идентификатора.

Имя-locator.png

Давайте взглянем на приведенный ниже код, чтобы автоматизировать текстовое поле.

driver.get("
driver.findElement(By.name("username")).sendKeys("edureka@yahoo.com"); //name locator for text box
WebElement searchIcon = driver.findElement(By.name("signin"));//name locator for next button
searchIcon.click();

В приведенном выше коде я дал значение локатора имен для следующий кнопка как знак, потому что, когда вы проверяете эту кнопку, вы можете видеть на рисунке ниже, что ее значение равно знак.

имя-локатор-следующая-кнопка-768x281.png

Когда вы запускаете вышеуказанное Ява код, ваш вывод будет таким же, как локатор идентификатора. Теперь давайте разберемся с еще одним локатором, т.е. linkText.

ссылкаТекст

Вы можете идентифицировать гиперссылки на веб-странице, используя ссылкаТекст. Его можно определить с помощью якорный тег (<а>). Чтобы создать гиперссылки на веб-странице, вы можете использовать теги привязки, за которыми следует текст ссылки.

Теперь давайте посмотрим на работу локатора linkText на примере. Предположим, вы хотите найти ссылку «Проблемы со входом», как показано на рисунке ниже. Как вы это сделаете?

Позвольте мне провести вас по шагам.

Yahoo-логин-для-ссылки.png

При проверке «Проблемы со входом?» — вы можете заметить, что он начинается с тега привязки. Но этот тег привязки не имеет атрибутов имени и идентификатора. В таких случаях можно использовать ссылкаТекст локатор.

Проблема-вход-в-осмотр-локаторов-в-селен-edureka.png

Как вы можете видеть в приведенном выше фрагменте, в нем есть текст под названием «Проблемы со входом?». Я воспользуюсь этим текстом и локатором linkText, чтобы написать свой код, как показано ниже.

driver.get("
driver.findElement(By.linkText("Trouble Signing in?")).click();//linkText locator for links

При выполнении приведенного выше кода вы будете перенаправлены на «Проблемы со входом?» страницу, как показано ниже.

частичная ссылка.png

В некоторых ситуациях вам может понадобиться найти ссылки по части текста в ссылкаТекст элемент. В таких ситуациях можно использовать Частичный текст ссылки найти элементы. Возьмем тот же пример и попробуем найти его. Я выберу «Проблемы со входом?» ссылка на сайт. Теперь, вместо того, чтобы вставлять полный текст, я просто дам его как Беда. Поэтому я изменю свой код следующим образом:

driver.get("
driver.findElement(By.partiallinkText("Trouble")).click();//partiallinkText locator for links

Теперь, когда вы запустите приведенный выше код, он будет перенаправлен на «Проблемы со входом?» page, но разница в том, что вы используете частичное значение для поиска ссылок. Я надеюсь, что это дало вам четкое представление о том, как работает локатор linkText и partialLinkText в селене. Теперь давайте двинемся дальше и разберемся с одним из самых простых локаторов в селене.

CSS в основном используется для предоставления правил стиля для веб-страниц, и вы можете использовать его для идентификации одного или нескольких элементов на веб-странице. Селектор CSS всегда является наилучшим способом поиска сложных элементов на странице.

CSS-селектор.png

Давайте возьмем тот же пример страницы входа в Yahoo и воспользуемся селекторами CSS. Я проверю элемент текстового поля электронной почты. Селектор CSS всегда начинается с # и при вводе значения Идентификатор атрибут как логин-имя пользователя, элемент выделяется. Это означает, что он смог найти элемент с помощью селектора CSS. Теперь давайте скопируем это значение и воспользуемся селектором CSS в eclipse, чтобы понять его работу. Итак, мой код выглядит так:

driver.findElement(By.cssSelector("#login-username")).sendKeys("edureka@yahoo.com");
driver.findElement(By.cssSelector("#login-signin")).click();

Когда вы запустите приведенный выше фрагмент кода, вы будете перенаправлены на Страница входа в Yahoo и просит ввести пароль. Вот как это работает. Теперь давайте углубимся в последний локатор этой статьи и разберемся с XPath.

XPath

XPath — это язык для запросов XML-документов. XPath — важная стратегия поиска элементов в селене. Он также состоит из выражения пути и некоторых условий. Здесь вы можете легко написать сценарий/запрос XPath, чтобы найти любой элемент на веб-странице.

Теперь давайте попробуем понять это на примере. Я запущу Google Chrome и перейду к google.com. Здесь я попытаюсь найти окно поиска с помощью XPath. Изучив веб-элемент, вы увидите, что он имеет входной тег и атрибуты, такие как класс и идентификатор. Далее я буду использовать имя тега и эти атрибуты для создания XPath, который, в свою очередь, найдет панель поиска.

google-xpath.png

Вам просто нужно щелкнуть вкладку «Элементы» и нажать Ctrl + F, чтобы открыть окно поиска в инструменте разработчика Chrome. Здесь вы можете написать XPath, селектор строк, и он даст поиск на основе этих критериев.

На изображении выше вы можете видеть, что у него есть тег ввода. Теперь я начну с // ввода. Здесь //input подразумевает имя тега. Я буду использовать имя атрибут и передать ‘q’ в одинарных кавычках в качестве его значения. Это даст следующее выражение XPath:

//input[@name=’q’]

Xpath-google.png

На приведенном выше изображении вы можете видеть, что при записи XPath он выделил элемент, что означает, что этот конкретный элемент был расположен с использованием XPath.

Теперь вы можете использовать приведенный ниже код в своем Eclipse, чтобы найти определенный элемент с помощью XPath.

driver.get("
driver.findElement(By.xpath("//input[@id='q']")).sendKeys("Selenium"); //xpath for search box
WebElement searchIcon = driver.findElement(By.xpath("//input[@id='Google Search']"));//xpath for search button

При написании этого кода вы получите автоматический поиск Selenium. По сути, именно так вы можете использовать XPath.

Итак, это все о разных типах локаторов в Selenium. Теперь давайте двинемся дальше и разберемся с некоторыми из лучших практик использования Selenium Locators.

Понимание концепции локаторов в Selenium — это одно, а умение их использовать — совсем другое. Возможность построить надежный локатор начинается с понимания того, что такое надежный локатор. Ниже перечислены три критерия, которых вы должны придерживаться при использовании локаторов в селене:

  • Надежные локаторы в Selenium максимально просты и компактны: Чем больше элементов содержит локатор, тем выше вероятность того, что он сломается из-за изменения структуры страницы.
  • Локаторы Selenium по-прежнему работают после изменения свойств элемента пользовательского интерфейса: Использование часто изменяемых атрибутов, таких как классы модификаторов (menu__item–red), никогда не является хорошей практикой.
  • Локаторы Selenium, надежные по своей природе, все еще работают после того, как вы измените элементы пользовательского интерфейса вокруг целевого элемента: Всякий раз, когда вы используете неуникальный атрибут, есть вероятность, что локаторы сломаются, потому что кто-то добавил элемент с тем же самым атрибутом выше.

На этом мы подошли к концу этой статьи о локаторах в Selenium. Если вы нашли эту статью информативной, вы можете кликните сюда читать подобные статьи.

Есть к нам вопрос? Пожалуйста, укажите это в разделе комментариев статьи «Локаторы в Selenium», и мы свяжемся с вами.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *