selenium
Eerste project in selenium met Java
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 :
IntelliJ Idea voor Selenium opzetten
Vereisten:
- Java is geïnstalleerd
- Selenium wordt geëxtraheerd in een map (bevat 2 bestanden en 1 map)
Volg deze stappen om IntelliJ Idea voor Selenium in te stellen.
- Klik op "Nieuw project" .
- Kies de toepassing Java <"Hello World"
- Typ de naam van het project en maak deze aan.
Uw scherm zou er ongeveer zo uit moeten zien
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
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