Kattintson a Szelén elemei elemre a JavaScript használatával

1. Bemutatkozás

Ebben a rövid bemutatóban egy egyszerű példát fogunk megnézni, hogyan kell kattintani és elemet használni a Selenium WebDriver programban JavaScript használatával.

A bemutatónkhoz a JUnit és a Selenium használatával nyitunk //baeldung.com és keresse meg a „Szelén” cikkeket.

2. Függőségek

Először hozzáadjuk a szelén-java és junit projektünk függőségei a pom.xml:

 org.seleniumhq.selenium szelén-java 3.141.59 junit junit 4.13 teszt 

3. Konfiguráció

Ezután konfigurálnunk kell a WebDriver programot. Ebben a példában a Chrome megvalósítását fogjuk használni:

@A nyilvános void előtt setUp () {System.setProperty ("webdriver.chrome.driver", új File ("src / main / resources / chromedriver.mac"). GetAbsolutePath ()); illesztőprogram = new ChromeDriver (); }

Olyan módszert használunk, amelyhez a @Előtt hogy minden teszt előtt elvégezzük a kezdeti beállítást. Belül beállítjuk a webdriver.chrome.driver tulajdonság, amely meghatározza a króm illesztőprogram helyét. Ezt követően példázzuk a WebDriver tárgy.

Amikor a teszt befejeződik, be kell zárnunk a böngészőablakot. Megtehetjük a driver.close () utasítással egy metódussal @Utána. Ez biztosítja, hogy a teszt akkor is végrehajtásra kerül, ha a teszt nem sikerül:

@A nyilvános void után cleanUp () {driver.close (); }

4. Nyissa meg a böngészőt

Most létrehozhatunk egy tesztesetet, amely megteszi az első lépést - nyissa meg a weboldalt:

@Test public void whenSearchForSeleniumArticles_thenReturnNotEmptyResults () driver.get ("// baeldung.com"); Karakterlánc címe = driver.getTitle (); assertEquals ("Baeldung 

Itt használjuk a driver.get () módszer a weboldal betöltésére. Ezután ellenőrizzük a címét, hogy megbizonyosodjunk arról, hogy jó helyen vagyunk-e.

5. Kattintson egy elemre a JavaScript használatával

A szelén praktikus WebElement # kattintás módszer amely kattintási eseményt indít egy adott elemre. Bizonyos esetekben azonban a kattintási művelet nem lehetséges.

Ilyen például, ha egy letiltott elemre akarunk kattintani. Ebben az esetben, WebElement # kattintás dob egy IllegalStateException. Ehelyett használhatjuk a Selenium JavaScript támogatását.

Ehhez az első dologra lesz szükségünk JavascriptExecutor. Mivel a ChromeDriver egyszerűen megvalósíthatjuk azt, amire szükségünk van:

JavascriptExecutor végrehajtó = (JavascriptExecutor) illesztőprogram;

Miután megszerezte a JavascriptExecutor, használhatjuk azt executeScript módszer. Az argumentumok maga a szkript és a szkript paramétereinek tömbje. Esetünkben az első argumentumra kattintási módszert alkalmazunk:

végrehajtó.executeScript ("argumentumok [0] .click ();", elem);

Most állítsuk össze egyetlen módszerré, amelyet hívunk clickElement:

private void clickElement (WebElement elem) {JavascriptExecutor végrehajtó = (JavascriptExecutor) illesztőprogram; végrehajtó.executeScript ("argumentumok [0] .click ();", elem); }

És végül hozzáadhatjuk ezt a tesztünkhöz:

@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 ("keresés")); searchInput.sendKeys ("Szelén"); WebElement seeSearchResultsButton = driver.findElement (By.cssSelector (". Btn-search")); clickElement (lásdSearchResultsButton); }

6. Nem kattintható elemek

Az egyik leggyakoribb probléma, amely akkor jelentkezik, amikor egy elemre kattint a JavaScript használatával, a kattintás parancsfájl végrehajtása, mielőtt az elemre kattintani lehet. Ebben a helyzetben a kattintási művelet nem fog megtörténni, de a kód továbbra is végrehajtódik.

A probléma kiküszöböléséhez vissza kell állítanunk a végrehajtást, amíg a kattintás elérhetővé nem válik. Tudjuk használni Várjon # addig, amíg megvárni, amíg a gomb meg nem jelenik.

Első, WebDriverWait objektum két paramétert igényel; a vezető és az időkorlát:

WebDriverWait wait = new WebDriverWait (meghajtó, 5000); 

Akkor hívunk amíg, megadva a vártat elemToBeClickable feltétel:

várjon.ig (ExpectedConditions.elementToBeClickable (By.clName ("nav - menu_item_anchor"))); 

És miután ez sikeresen visszatér, tudjuk, hogy folytathatjuk:

WebElement searchButton = driver.findElement (By.clNév ("nav - menu_item_anchor")); clickElement (searchButton);

További rendelkezésre álló feltétel-módszerek a hivatalos dokumentációban találhatók.

7. Következtetés

Ebben az oktatóanyagban megtanultuk, hogyan kell kattintani a Selenium elemére a JavaScript használatával. Mint mindig, a cikk forrása elérhető a GitHubon.