Поиск по сайту:

Примеры Selenium findElement и findElements


Всякий раз, когда вы хотите взаимодействовать с веб-страницей, нам требуется, чтобы пользователь находил веб-элементы. Обычно мы начинаем с поиска HTML-элементов на странице всякий раз, когда планируем автоматизировать любое веб-приложение с помощью WebDriver. Selenium WebDriver определяет два метода для идентификации элементов: findElement и findElements.

  1. findElement: эта команда используется для уникальной идентификации веб-элемента на веб-странице.
  2. findElements: эта команда используется для уникальной идентификации списка веб-элементов на веб-странице.

Существует несколько способов уникальной идентификации веб-элемента на веб-странице, таких как идентификатор, имя, имя класса, LinkText, PartialLinkText, TagName и XPath.

Разница между методами findElement и findElements

Метод НайтиЭлемент():

  • Эта команда используется для доступа к любому отдельному элементу на веб-странице.
  • Он вернет объект первого соответствующего элемента указанного локатора
  • Он выдаст NoSuchElementException, если не сможет идентифицировать элемент

Метод НайтиЭлементы():

  • Эта команда используется для уникальной идентификации списка веб-элементов на веб-странице.
  • Использование этого метода очень ограничено
  • Если элемент не существует на странице, он вернет значение с пустым списком

Команда Selenium findElement

Команда Find Element принимает объект By в качестве параметра и возвращает объект типа WebElement. По объекту можно использовать с различными стратегиями поиска, такими как идентификатор, имя, имя класса, текст ссылки, XPath и т. д.

Синтаксис команды НайтиЭлемент

WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));

Стратегия локатора может принимать любое из следующих значений.

  • Идентификатор
  • Имя
  • Имя класса
  • Имя тега
  • Текст ссылки
  • Частичный текст ссылки
  • XPath

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

WebElement login= driver.findElement(By.linkText("Login"));

Команда Selenium findElements

Команда Selenium findElements принимает By object в качестве параметра и возвращает список веб-элементов. Он возвращает пустой список, если элементы не найдены с использованием заданной стратегии локатора и значения локатора.

Синтаксис команды FindElements

List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));

Пример:

List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));

Как использовать команду Selenium findElement

В демонстрационных целях используется следующее приложение: https://www.irctc.co.in/nget/user-registration Сценарий

  1. Откройте https://www.irctc.co.in/nget/user-registration для AUT.
  2. Найдите и нажмите кнопку-переключатель.

package com.journaldev.selenium.findelement;

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.chrome.ChromeDriver;

public class SeleniumFindElement { 
       public static void main (String [] args){ 

     System.setProperty("webdriver.chrome.driver","D:\\Drivers\\chromedriver.exe");
     WebDriver driver= new ChromeDriver();
     driver.manage().window.maximize():
     driver.get(:"https://www.irctc.co.in/nget/user-registration");

//Find the radio button for "Male" by using ID and click on it
driver.findElement(By.id("M")).click();

       } 
}

Как использовать команду Selenium findElements

Следующее приложение используется для демонстрационных целей. https://www.irctc.co.in/nget/user-registration Сценарий

  1. Откройте https://www.irctc.co.in/nget/user-registration для AUT.
  2. Найти текст радиокнопок и вывести на консоль


package com.journaldev.selenium.findelements;

import java.util.List;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class SeleniumFindElements {

	public static void main(String[] args) {

	System.setProperty("webdriver.chrome.driver","D:\\Drivers\\chromedriver.exe");
	WebDriver driver= new ChromeDriver();
        driver.get("https://www.irctc.co.in/nget/user-registration");
        List<WebElement> elements = driver.findElements(By.id("M"));
        System.out.println("Number of elements:" +elements.size());

       for(int i=0; i<elements.size(); i++){
       System.out.println("Radio button text:" + elements.get(i).getAttribute("value"));
	}
     }
}

Несколько стратегий для доступа к локаторам Selenium

Selenium Webdriver ссылается на веб-элементы с помощью метода findElement(By.). Метод findElement использует объект локатора, известный как . Существуют различные виды стратегий «По», которые вы можете использовать в зависимости от ваших требований.

1. По идентификатору

Команда: driver.findElement(By.id(<идентификатор элемента>)) Пример: Пример кода Java для поиска входного элемента по идентификатору

WebElement user = driver.findElement(By.id("JournalDev"));

2. По имени

Команда: driver.findElement(By.name()) Пример: Пример кода Java для поиска входного элемента по имени

WebElement user = driver.findElement(By.name("JournalDev"));

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

Команда: driver.findElement(By.className()) Пример: Пример кода Java для поиска входного элемента по className.

WebElement user = driver.findElement(By.className("JournalDev"));

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

Команда: driver.findElement(By.linkText(<текст ссылки>)) Пример: JournalDev-1 JournalDev-2 Пример кода Java для поиска соответствующей ссылки элемента или частичного текста ссылки:

WebElement link = driver.findElement(By.linkText("JournalDev-1"));
WebElement link = driver.findElement(By.partialLinkText("JournalDev-2"));

5. С помощью CSSSelector

Команда: driver.findElement(By.cssSelector()) Пример: Пример кода Java для поиска соответствующей ссылки элемента или частичного текста ссылки:

WebElement emailText = driver.findElement(By.cssSelector("input#email"));

6. По XPath

Команда: driver.findElement(By.xpath()) Пример кода Java для XPath:

// Absolute path
WebElement item = driver.findElement(By.xpath("html/head/body/table/tr/td"));

// Relative path
WebElement item = driver.findElement(By.xpath("//input"));

// Finding elements using indexes
WebElement item = driver.findElement(By.xpath("//input[2]"));
```****