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.