Klik na elemente u selenu pomoću JavaScript-a

1. Uvod

U ovom kratkom uputstvu ćemo pogledati jednostavan primjer kako kliknuti i element u Selenium WebDriver koristeći JavaScript.

Za naš demo koristit ćemo JUnit i Selenium za otvaranje //baeldung.com i potražite članke "Selen".

2. Ovisnosti

Prvo, dodamo selen-java i junit ovisnosti o našem projektu u pom.xml:

 org.seleniumhq.selenium selenium-java 3.141.59 junit junit 4.13 test 

3. Konfiguracija

Dalje, moramo konfigurirati WebDriver. U ovom ćemo se primjeru koristiti njegova implementacija Chromea:

@Prije javne void setUp () {System.setProperty ("webdriver.chrome.driver", nova datoteka ("src / main / resources / chromedriver.mac"). GetAbsolutePath ()); upravljački program = novi ChromeDriver (); }

Koristimo metodu označenu s @Prije obaviti početno postavljanje prije svakog testa. Unutar postavljamo webdriver.chrome.driver svojstvo koje definira mjesto kromiranog upravljačkog programa. Nakon toga uspostavljamo instancu WebDriver objekt.

Kad test završi, trebali bismo zatvoriti prozor preglednika. To možemo učiniti postavljanjem driver.close () izraz u metodi označenoj s @Nakon. To osigurava izvršenje čak i ako test ne uspije:

@Nakon javne praznine cleanUp () {driver.close (); }

4. Otvaranje preglednika

Sada možemo stvoriti testni slučaj koji će učiniti naš prvi korak - otvoriti web stranicu:

@Test public void whenSearchForSeleniumArticles_thenReturnNotEmptyResults () driver.get ("// baeldung.com"); Naslov niza = driver.getTitle (); assertEquals ("Baeldung 

Ovdje koristimo driver.get () metoda za učitavanje web stranice. Zatim provjeravamo njegov naslov kako bismo bili sigurni da smo na pravom mjestu.

5. Klik na element pomoću JavaScript-a

Selen dolazi s rukom WebElement # klik metoda koji poziva događaj klika na zadani element. Ali u nekim slučajevima radnja klikom nije moguća.

Jedan je primjer ako želimo kliknuti onemogućeni element. U tom slučaju, WebElement # klik baca an IllegalStateException. Umjesto toga, možemo koristiti podršku za JavaScript tvrtke Selenium.

Da bismo to učinili, prva stvar koja će nam trebati je JavascriptExeecuter. Budući da koristimo ChromeDriver implementacije, možemo je jednostavno prebaciti na ono što nam treba:

JavascriptExecutor izvršitelj = (JavascriptExecutor) pokretački program;

Nakon što je dobio JavascriptExeecuter, možemo koristiti njegov executeScript metoda. Argumenti su sama skripta i niz parametara skripte. U našem se slučaju pozivamo na metodu klikanja na prvom argumentu:

izvršitelj.executeScript ("argumenti [0] .click ();", element);

Ajmo sad to spojiti u jednu metodu koju ćemo nazvati klikniteElement:

private void clickElement (element WebElement) {JavascriptExecutor izvršitelj = (JavascriptExecutor) pokretački program; izvršitelj.executeScript ("argumenti [0] .click ();", element); }

I na kraju, ovom testu možemo dodati ovo:

@Test public void whenSearchForSeleniumArticles_thenReturnNotEmptyResults () {// ... load //baeldung.com WebElement searchButton = driver.findElement (By.className ("nav - menu_item_anchor")); clickElement (searchButton); WebElement searchInput = driver.findElement (By.id ("pretraga")); searchInput.sendKeys ("Selen"); WebElement seeSearchResultsButton = driver.findElement (By.cssSelector (". Btn-search")); clickElement (vidiSearchResultsButton); }

6. Elementi koji se ne mogu kliknuti

Jedan od najčešćih problema koji se javljaju prilikom klika na element pomoću JavaScripta je izvršavanje skripte za klik prije nego što je element moguće kliknuti. U ovoj se situaciji akcija klika neće dogoditi, ali kôd će se i dalje izvršavati.

Da bismo prevladali ovaj problem, moramo zadržati izvršenje dok klik ne postane dostupan. Možemo koristiti WebDriverČekajte # do pričekati dok se gumb ne generira.

Prvi, WebDriverWait objekt zahtijeva dva parametra; vozač i timeout:

WebDriverWait wait = novi WebDriverWait (upravljački program, 5000); 

Zatim, zovemo do, dajući očekivano elementToBeClickable stanje:

wait.until (ExpectedConditions.elementToBeClickable (By.className ("nav - menu_item_anchor"))); 

A nakon što se to uspješno vrati, znamo da možemo nastaviti:

WebElement searchButton = driver.findElement (By.className ("nav - menu_item_anchor")); clickElement (searchButton);

Više dostupnih metoda stanja potražite u službenoj dokumentaciji.

7. Zaključak

U ovom uputstvu naučili smo kako kliknuti element u Seleniju pomoću JavaScript-a. Kao i uvijek, izvor članka dostupan je na GitHubu.


$config[zx-auto] not found$config[zx-overlay] not found