Klikanie na prvky v seléne pomocou JavaScriptu

1. Úvod

V tomto krátkom tutoriáli sa pozrieme na jednoduchý príklad toho, ako kliknúť a elementovať v Selenium WebDriver pomocou JavaScriptu.

Na ukážku použijeme na otvorenie JUnit a Selenium //baeldung.com a vyhľadajte články „Selén“.

2. Závislosti

Najskôr pridáme selén-java a junit závislosti na našom projekte v pom.xml:

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

3. Konfigurácia

Ďalej musíme nakonfigurovať WebDriver. V tomto príklade použijeme jeho implementáciu pre Chrome:

@Before public void setUp () {System.setProperty ("webdriver.chrome.driver", nový súbor ("src / main / resources / chromedriver.mac"). GetAbsolutePath ()); ovládač = nový ChromeDriver (); }

Používame metódu s poznámkou @ Predtým vykonať počiatočné nastavenie pred každým testom. Vo vnútri nastavujeme webdriver.chrome.driver vlastnosť definujúca umiestnenie chrómového ovládača. Potom spustíme inštanciu WebDriver objekt.

Po dokončení testu by sme mali zavrieť okno prehliadača. Môžeme to urobiť umiestnením driver.close () vyhlásenie v metóde s poznámkami @ Potom. Takto sa zabezpečí, že sa vykoná, aj keď test zlyhá:

@After public void cleanUp () {driver.close (); }

4. Otvorenie prehľadávača

Teraz môžeme vytvoriť testovací prípad, ktorý urobí náš prvý krok - otvorte webovú stránku:

@Test public void whenSearchForSeleniumArticles_thenReturnNotEmptyResults () driver.get ("// baeldung.com"); Názov reťazca = driver.getTitle (); assertEquals ("Baeldung 

Tu používame driver.get () spôsob načítania webovej stránky. Ďalej overíme jeho názov, aby sme sa uistili, že sme na správnom mieste.

5. Kliknutie na prvok pomocou JavaScriptu

Selén prichádza s praktickým WebElement # kliknutie metóda ktorá vyvolá udalosť kliknutia na daný prvok. V niektorých prípadoch však nie je možná akcia kliknutia.

Jedným z príkladov je, ak chceme kliknúť na deaktivovaný prvok. V tom prípade, WebElement # kliknutie hodí IllegalStateException. Namiesto toho môžeme použiť podporu JavaScriptu od Selenium.

Aby sme to dosiahli, prvá vec, ktorú budeme potrebovať, je JavascriptExecutor. Pretože používame ChromeDriver implementáciu môžeme jednoducho použiť na to, čo potrebujeme:

JavascriptExecutor executor = (JavascriptExecutor) ovládač;

Po získaní JavascriptExecutor, môžeme použiť jeho executeScript metóda. Argumenty sú samotný skript a pole parametrov skriptu. V našom prípade vyvoláme metódu kliknutia na prvý argument:

executor.executeScript ("argumenty [0] .click ();", prvok);

Poďme to teraz spojiť do jednej metódy, ktorú budeme nazývať clickElement:

private void clickElement (prvok WebElement) {JavascriptExecutor executor = (JavascriptExecutor) ovládač; executor.executeScript ("argumenty [0] .click ();", prvok); }

A na záver môžeme pridať toto do nášho testu:

@Test public void whenSearchForSeleniumArticles_thenReturnNotEmptyResults () {// ... načítať //baeldung.com WebElement searchButton = driver.findElement (By.className ("nav - menu_item_anchor")); clickElement (searchButton); WebElement searchInput = driver.findElement (By.id ("vyhľadávanie")); searchInput.sendKeys ("selén"); WebElement seeSearchResultsButton = driver.findElement (By.cssSelector (". Btn-search")); clickElement (seeSearchResultsButton); }

6. Neklikateľné prvky

Jedným z najbežnejších problémov vyskytujúcich sa pri klikaní na prvok pomocou JavaScriptu je vykonanie skriptu kliknutia skôr, ako je možné na prvok kliknúť. V tejto situácii sa akcia kliknutia nestane, ale kód sa bude naďalej spúšťať.

Aby sme tento problém prekonali, musíme vykonávanie pozastaviť, kým nebude k dispozícii kliknutie. Môžeme použiť WebDriver Počkajte # do počkať, kým sa tlačidlo vykreslí.

Najprv, ŽebDriverWait objekt vyžaduje dva parametre; vodič a časový limit:

WebDriverWait wait = nový WebDriverWait (ovládač, 5 000); 

Potom zavoláme do, dávajúc očakávané elementToBeClickable stav:

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

Akonáhle sa úspešne vráti, vieme, že môžeme pokračovať:

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

Viac dostupných metód stavu nájdete v oficiálnej dokumentácii.

7. Záver

V tomto tutoriáli sme sa naučili, ako kliknúť na prvok v seléne pomocou JavaScriptu. Zdroj článku je ako vždy k dispozícii na GitHub.


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