Примеры Selenium findElement и findElements
Всякий раз, когда вы хотите взаимодействовать с веб-страницей, нам требуется, чтобы пользователь находил веб-элементы. Обычно мы начинаем с поиска HTML-элементов на странице всякий раз, когда планируем автоматизировать любое веб-приложение с помощью WebDriver. Selenium WebDriver определяет два метода для идентификации элементов: findElement
и findElements
.
- findElement: эта команда используется для уникальной идентификации веб-элемента на веб-странице.
- 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
Сценарий
- Откройте https://www.irctc.co.in/nget/user-registration для AUT.
- Найдите и нажмите кнопку-переключатель.
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
Сценарий
- Откройте https://www.irctc.co.in/nget/user-registration для AUT.
- Найти текст радиокнопок и вывести на консоль
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(
WebElement user = driver.findElement(By.name("JournalDev"));
3. По названию класса
Команда: driver.findElement(By.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(
WebElement emailText = driver.findElement(By.cssSelector("input#email"));
6. По XPath
Команда: driver.findElement(By.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]"));
```****