Pracuję z selenium-java, aby zautomatyzować niektóre testy (jest to samouczenie). Utknąłem w kliknięciu hiperłącza, ale ten href jest dość szczególny, ponieważ tak:

<a tabindex="-1" href="../../myWebPage.html"><span>My Web Page</span></a>

Mój kod java to:

1. - driver.findElement(By.xpath("//a[@href='../../myWebPage.html']")).click(); 2. - driver.findElement(By.xpath("//a[@href='https://RealHost/pag1/myWebPage.html']")).click();

Druga opcja, której użyłem, dotyczy prawdziwego linku, ale żadna z nich nie działa.

Czy mógłbyś mi pomóc?

P.S: Użyłem też opcji driver.findElement(By.LinkText("https://RealHost/pag1/myWebPage.html")).click();, ale bez powodzenia.

Dzięki chłopaki!

0
Don Gonzalo Cortez Mayer 2 kwiecień 2020, 19:00

4 odpowiedzi

Najlepsza odpowiedź

Powinieneś być w stanie zlokalizować element link, najpierw znajdując jego element nadrzędny, przeglądając DOM i uzyskując do tego ścieżkę xpath. Następnie użyj tego elementu nadrzędnego, aby znaleźć elementy ze znacznikiem „a”

WebElement parent = findElement(By.xpath("/*path to parent element here*/"));
parent.findElement(By.tagName("a")).click();

Zauważ, że element nadrzędny może mieć wiele elementów potomnych tagName „a”, jeśli tak jest, użyj funkcji findElements (), aby uzyskać zbiór wszystkich hiperłączy z tym elementem nadrzędnym. Następnie wyszukaj w kolekcji tę, którą chcesz.

WebElement parent = findElements(By.xpath("/*path to parent element here*/"));
List<WebElement> elements = parent.findElements(By.tagName("a")).click();
//search the list for the correct link

Inną rzeczą, którą możesz spróbować, byłoby zlokalizowanie elementu przez linkText.

findElement(By.linkText("/*The hyperlinks text*/")).click();

Mam nadzieję że to pomoże!

0
ThallsEternal 2 kwiecień 2020, 16:13

To działa dla mnie:

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.linkText("My Web Page"))).click();

Dodałem talię nad elementem, który można kliknąć, i jego pracami

Dzięki za pomoc.

PA

0
Don Gonzalo Cortez Mayer 3 kwiecień 2020, 12:56

Wypróbuj dowolną z xpath.

driver.findElement(By.xpath("//a[contains(@href,'/myWebPage.html')]//span[text()='My Web Page']")).click();

LUB

driver.findElement(By.xpath("//a[.//span[text()='My Web Page']]")).click();

LUB selektor css

driver.findElement(By.cssSelector("a[href*='/myWebPage.html']>span")).click();
0
KunduK 2 kwiecień 2020, 17:40

Działa to dobrze w przypadku sterownika IE, ale w przypadku Chrome kończy się niepowodzeniem z powodu:

Nieaktualne odniesienie do elementu: element nie jest dołączony do strony internetowej

Prosimy o pomoc!

0
Don Gonzalo Cortez Mayer 8 kwiecień 2020, 21:34