Селен - Локаторы

Поиск элементов в Selenium WebDriver выполняется с помощью методов findElement () и findElements (), предоставляемых классами WebDriver и WebElement.

  • findElement () возвращает объект WebElement на основе заданных критериев поиска или выдает исключение, если не находит ни одного элемента, соответствующего критериям поиска.

  • findElements () возвращает список WebElements, соответствующих критериям поиска. Если элементы не найдены, возвращается пустой список.

В следующей таблице приведен весь синтаксис Java для поиска элементов в Selenium WebDriver.

Метод Синтаксис Описание
По ID driver.findElement (By.id (<идентификатор элемента>)) Находит элемент с помощью атрибута ID
По имени driver.findElement (By.name (<имя элемента>)) Находит элемент с помощью атрибута Name
По названию класса driver.findElement (By.className (<класс элемента>)) Находит элемент с помощью атрибута Class
По имени тега driver.findElement (By.tagName (<htmltagname>)) Находит элемент с помощью тега HTML
По тексту ссылки driver.findElement (By.linkText (<linktext>)) Находит ссылку с помощью текста ссылки
По частичному тексту ссылки driver.findElement (By.partialLinkText (<linktext>)) Находит ссылку, используя частичный текст ссылки
По CSS driver.findElement (By.cssSelector (<css селектор>)) Находит элемент с помощью селектора CSS
Автор XPath driver.findElement (By.xpath (<xpath>)) Находит элемент с помощью запроса XPath

Использование локаторов

Теперь давайте разберемся с практическим использованием каждого из методов локатора с помощью https://www.calculator.net

По ID

Здесь доступ к объекту осуществляется с помощью идентификаторов. В данном случае это идентификатор текстового поля. Значения вводятся в текстовое поле с помощью метода sendkeys с помощью идентификатора (cde density).

driver.findElement(By.id("cdensity")).sendKeys("10");

По имени

Здесь доступ к объекту осуществляется с помощью имен. В данном случае это имя текстового поля. Значения вводятся в текстовое поле с помощью метода sendkeys с помощью идентификатора (cde density).

driver.findElement(By.name("cdensity")).sendKeys("10");

По названию класса

Здесь доступ к объекту осуществляется с помощью имен классов. В данном случае это имя класса WebElement. Доступ к значению можно получить с помощью метода gettext.

List<WebElement> byclass = driver.findElements(By.className("smalltext smtb"));

По имени тега

Имя тега DOM элемента может использоваться для поиска этого конкретного элемента в WebDriver. С помощью этого метода очень просто обрабатывать таблицы. Взгляните на следующий код.

WebElement table = driver.findElement(By.id("calctable"));
List<WebElement> row = table.findElements(By.tagName("tr"));
int rowcount = row.size();

По тексту ссылки

Этот метод помогает найти элемент ссылки с соответствующим видимым текстом.

driver.findElements(By.linkText("Volume")).click();

По частичному тексту ссылки

Этот метод помогает найти элемент ссылки с частичным совпадением видимого текста.

driver.findElement(By.partialLinkText("Volume")).click();

По CSS

CSS используется как метод для идентификации веб-объекта, однако НЕ все браузеры поддерживают идентификацию CSS.

WebElement loginButton = driver.findElement(By.cssSelector("input.login"));

Автор XPath

XPath означает язык пути XML. Это язык запросов для выбора узлов из XML-документа. XPath основан на древовидном представлении XML-документов и предоставляет возможность перемещаться по дереву, выбирая узлы с использованием различных критериев.

driver.findElement(By.xpath(".//*[@id = 'content']/table[1]/tbody/tr/td/table/tbody/tr[2]/td[1]/input")).sendkeys("100");