Как выделить элемент с помощью Selenium WebDriver

В обычных случаях Selenium WebDriver не имеет метода выделения. Поэтому я использую JavaScriptExecuter для решения этой проблемы. Нам нужно написать несколько строк кода для выделения элементов с помощью Selenium WebDriver. Мы должны использовать интерфейс JavaScriptExecutor, чтобы выделить элемент.

Что такое JavaScriptExecutor?

Веб-элементы управления иногда плохо реагируют на команды Selenium, и мы можем столкнуться с проблемами. Мы используем интерфейс JavaScriptExecutor для решения таких сценариев.

Он предоставляет механизм для выполнения Javascript драйвером Selenium. Он предлагает методы для «executescript» и «executeAsyncScript» для запуска JavaScript в выбранной в данный момент структуре или окне.

Нет необходимости писать разные сценарии для использования сценария Selenium WebDriver для запуска JavaScript в приложении. Просто используйте предопределенный интерфейс под названием JavaScriptExecutor.

В приведенном ниже коде показан мой метод выделения элемента в Selenium.

package Demo;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;
public class DemoHighlight {
@Test
public void highlightElement() {
//Setting Property
System.setProperty("webdriver.chrome.driver", "/Users/demouser/Downloads/chromedriver");
//Instantiating driver object
WebDriver driver = new ChromeDriver();
//Launching Gmail
driver.get("https://www.gmail.com");
//Collecting the webelement
WebElement ele = driver.findElement(By.id("identifierId"));
//Calling the highlighter method 
highLighterMethod(driver, ele);
ele.sendKeys("[email protected]");
}
//Creating my own method
public void highLighterMethod(WebDriver driver, WebElement element){
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].setAttribute('style', 'background: green; border: 3px solid blue;');", element);
}
}