как перейти по ссылке href с селеном - java - PullRequest
0 голосов
/ 02 апреля 2020

Я работаю с селеном - java, чтобы автоматизировать некоторые тесты (это самообучение). Я застрял в щелчке по гиперссылке, но эта ссылка довольно специфична, потому что примерно так:

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

Мой java код:

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

Второй вариант, который я использовал, связан с реальной ссылкой, но ни один из них не работает.

Не могли бы вы мне помочь?

PS: I также использовал опцию driver.findElement(By.LinkText("https://RealHost/pag1/myWebPage.html")).click();, но безуспешно.

Спасибо, ребята!

Ответы [ 4 ]

0 голосов
/ 09 апреля 2020

это нормально работает для IE драйвера, но с Chrome происходит сбой из-за:

ссылка на устаревший элемент: элемент не прикреплен к веб-странице

Помогите, пожалуйста!

0 голосов
/ 02 апреля 2020

Вы должны быть в состоянии найти элемент ссылки, сначала найдя его родительский элемент, просмотрев DOM и получив xpath для этого. Затем используйте этот родительский элемент, чтобы найти элементы с тегом «a»

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

. Обратите внимание, что родительский элемент может иметь несколько потомков tagName «a», если это так, используйте findElements (), чтобы получить Коллекция всех гиперссылок с этим родителем. Затем найдите в коллекции нужную вам информацию.

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

Еще одна вещь, которую вы можете попробовать, - найти элемент по linkText.

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

надеюсь, это поможет!

0 голосов
/ 03 апреля 2020

это работает для меня:

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

я добавил ожидание, чтобы элемент стал активным, и он работает

Спасибо, ребята, за вашу помощь.

Пока

0 голосов
/ 02 апреля 2020

Попробуйте любой из xpath.

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

ИЛИ

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

ИЛИ css селектор

driver.findElement(By.cssSelector("a[href*='/myWebPage.html']>span")).click();
...