Zoeken…


Invoering

Dit is een inleiding tot Selenium met behulp van Java. Hoewel we niet verwachten dat je iets weet over Selenium, moet je vooraf Java-kennis hebben om deze cursus te volgen.

Download links :

Selenium

IntelliJ IDEE

ChromeDriver

JDK 8

IntelliJ Idea voor Selenium opzetten

Vereisten:

  1. Java is geïnstalleerd
  2. Selenium wordt geëxtraheerd in een map (bevat 2 bestanden en 1 map)

Volg deze stappen om IntelliJ Idea voor Selenium in te stellen.

  1. Klik op "Nieuw project" .
  2. Kies de toepassing Java <"Hello World"
  3. Typ de naam van het project en maak deze aan.

Uw scherm zou er ongeveer zo uit moeten zien voer hier de afbeeldingsbeschrijving in

Ga nu naar

File < Project Structure < Modules < Dependencies

Klik daar op het groene plus ( + ) pictogram en kies Bibliotheek. Navigeer vervolgens naar de geëxtraheerde Selenium-map en voeg " selenium-java 2.4.0.jar " toe. Nadat u dit hebt toegevoegd, klikt u opnieuw op het groene plus ( + ) pictogram en kiest u nu "Directory". Zoek deze keer de map libs van Selenium en klik op OK terwijl u deze selecteert.

Uiteindelijk moet uw projectstructuur er zo uitzien voer hier de afbeeldingsbeschrijving in

Klik nu op OK en je bent klaar.

ChromeDriver instellen

Vereisten: ChromeDriver is gedownload

Kopieer de volgende code naar je klas.

public static void main(String[] args) {
    System.setProperty("webdriver.chrome.driver", "path of the exe file\\chromedriver.exe");
}

Als u Linux gebruikt, geeft u het pad op naar ChromeDriver Binary.

Een website openen met Selenium

We gebruiken de methode get om naar een website te gaan. Dit zou bijvoorbeeld Google openen

public static void main(String[] args) throws InterruptedException {
    System.setProperty("webdriver.chrome.driver", "path of the exe file\\chromedriver.exe");
    WebDriver driver = new ChromeDriver();
    driver.get("https:www.google.com");
    Thread.sleep(3000); //wait for 3 seconds
    driver.quit();      //close Chrome
}

driver.quit() sluit de browser. Om een vertraging te creëren, gebruiken we Thread.sleep(3000) .

Elementen in Selenium krijgen

Elk HTML-element in Selenium wordt een WebElement . Een p tag zou bijvoorbeeld een WebElement , een a tag zou een WebElement , enz. Overweeg de volgende html-structuur:

<a id="link1" href="https://www.google.com">google</a>
<p class="p1">
This is a paragraph
</p>

Nu, als we wilden het krijgen a tag, zouden we kunnen doen

WebElement link = driver.findElement(By.id("link1"));

Nu kunnen we hierop klikken door

link.click();

Laten we nog een voorbeeld nemen. Als we de tekst van de p tag wilden, dat wil zeggen : " Dit is een alinea ", kunnen we dat doen

WebElement p = driver.findElement(By.className("p1"));
System.out.println(p.getText());

We kunnen ook Elements op tags krijgen, zoals

WebElement tag = driver.findElement(By.tagName("a"));

Werkvoorbeeld in Selenium

Nu we de basis van Selenium kennen, kunnen we ons eigen project maken. Voor dit voorbeeld maken we een programma dat de nieuwste vragen over stack-overflow vindt.

We beginnen eenvoudig, laten stack-overflow open.

public static void main(String[] args) throws InterruptedException {
    System.setProperty("webdriver.chrome.driver", "path of the exe file\\chromedriver.exe");
    WebDriver driver = new ChromeDriver();
    driver.get("https:stackoverflow.com");
    Thread.sleep(3000);
    driver.quit();
}

Nu, als je kijkt naar de bron van de pagina, vindt u dat alle vragen, zijn a -tags, met een className van question-hyperlink . Aangezien er echter meerdere vragen zijn, gebruiken we een List met WebElement in plaats van WebElement . Zo kunnen we doen

public static void main(String[] args) throws InterruptedException {
    System.setProperty("webdriver.chrome.driver", "path to chromedriver\\chromedriver.exe");
    WebDriver driver = new ChromeDriver();
    driver.get("https:stackoverflow.com");
    List<WebElement> list = driver.findElements(By.className("question-hyperlink"));
}

Nu moeten we het krijgen href attribuut van a tag, die de link van de vraag heeft. Om dit te doen, kunnen we getAttribute("href") op elk WebElement , zoals

public static void main(String[] args) throws InterruptedException {
    System.setProperty("webdriver.chrome.driver", "path to chromedriver\\chromedriver.exe");
    WebDriver driver = new ChromeDriver();
    driver.get("https:stackoverflow.com");
    List<WebElement> list = driver.findElements(By.className("question-hyperlink"));
    System.out.println(list.size());
    list.forEach(e->System.out.println(e.getAttribute("href")));
    driver.quit();
}

Hiermee worden de koppelingen van de topvragen over Stack-overflow afgedrukt.

Kenmerken van WebElements in Selenium verkrijgen

Om het kenmerk van een WebElement , gebruiken we getAttribute op dat WebElement . Overweeg bijvoorbeeld de volgende HTML-tag

<a id="click" href="https://www.google.com">

We kunnen het href kenmerk van het Element vinden op

WebElement e = driver.findElement(By.id("click"));
System.out.println(e.getAttribute("href")); //prints https://www.google.com


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow