Найти локатор элементов в IE webddriver (любой драйвер на самом деле) - PullRequest
0 голосов
/ 17 октября 2019

В этой статье мы расскажем о решении, которое я создал, чтобы помочь находить элементы на веб-драйверах с помощью System.in, поскольку нет (по крайней мере, мне известно) расширений для поиска локаторов в IE.

Это решение не является идеальным и может создавать проблемы, однако вы можете легко реализовать навигацию и быстро реагировать / выделять элементы.

Пакет:

package locator;

Импорт:

import org.openqa.selenium.*;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;

import java.util.List;
import java.util.Scanner;
import java.util.concurrent.TimeUnit;

Класс:

public class LocatorHelper {
private static WebDriver driver = null;

public static void main(String[] args) {
    createIE();
    driver.get("http://www.google.com.br/");
    JavascriptExecutor js = (JavascriptExecutor) driver;
    Scanner scan = new Scanner(System.in);
    String mainXpath = "";
    String lastXpath = "";

    while (!mainXpath.equals("exit")) {
        System.out.println("Type an xpath: ");
        lastXpath = mainXpath;
        mainXpath = scan.nextLine();
        if (lastXpath.length() > 0) {
            List<WebElement> elements = getElements(lastXpath, true);
            if (elements != null) {
                for (WebElement element : elements) {
                    js.executeScript("arguments[0].style.border='1px solid orange'", element);
                }
            }
        }
        List<WebElement> elements = getElements(mainXpath);
        if (elements != null) {
            for (WebElement element : elements) {
                js.executeScript("arguments[0].style.border='3px solid red'", element);
            }
        }
        System.out.println("---------------------------------------------------------------------------------------------------");
    }
}

private static List<WebElement> getElements(String xpath, boolean... disableLog) {
    List<WebElement> elements = null;
    try {
        elements = driver.findElements(By.xpath(xpath));
        int count = elements.size();
        if (disableLog.length == 0) {
            if (count > 1) {
                System.out.println("The xpath '" + xpath + "' returned " + count + " elements");
            } else if (count == 1) {
                System.out.println("The xpath '" + xpath + "' returned one element");
            } else {
                System.out.println("The xpath '" + xpath + "' returned no elements");
            }
        }
    } catch (InvalidSelectorException e) {
        if (disableLog.length == 0) {
            System.out.println("The xpath '" + xpath + "' is not valid");
        }
    }
    return elements;
}

private static void createIE() {
    //your driver locator
    System.setProperty("webdriver.ie.driver", "src/main/resources/drivers/IEDriverServerNew.exe");
    DesiredCapabilities caps = DesiredCapabilities.internetExplorer();
    caps.setCapability("ignoreZoomSetting", true);
    caps.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
    caps.setCapability(InternetExplorerDriver.ELEMENT_SCROLL_BEHAVIOR, true);
    DesiredCapabilities.internetExplorer().setCapability("ignoreProtectedModeSettings", true);
    caps.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
    caps.setCapability(CapabilityType.SUPPORTS_JAVASCRIPT, true);
    caps.setJavascriptEnabled(true);

    driver = new InternetExplorerDriver(caps);
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    driver.manage().window().maximize();
}
}

На этом изображении локатор обнаружил один элемент Пример одного элемента, расположенного

В этомimage, локатор обнаружил 20 элементов Пример 20 найденных элементов

При вводе локаторов на терминале текущие элементы будут выделены красным, а все найденные предыдущие элементы будут выделены наоранжевый с более тонкой линией.

Пример ввода

Надеюсь, это поможет

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