Как нажать ссылку href с помощью Selenium

У меня есть ссылка html href

<a href="/docs/configuration">App Configuration</a>

используя Selenium Мне нужно щелкнуть ссылку. В настоящее время я использую код ниже -

Driver.findElement(By.xpath("//a[text()='App Configuration']")).click(); 

Но это не перенаправление на страницу. Я также пробовал под кодом -

 Driver.findElement(By.xpath(//a[@href ='/docs/configuration']")).click();

Но это бросается ниже исключения -

org.openqa.selenium.ElementNotVisibleException: элемент в настоящее время не виден и поэтому не может взаимодействовать с     Длительность команды или тайм-аут: 13 миллисекунд

Ссылка видна и страница полностью загружена. Я не знаю, что не так с моим кодом.

Ответ 1

 webDriver.findElement(By.xpath("//a[@href='/docs/configuration']")).click();

Вышеуказанная линия работает нормально. Удалите пробел после href.

Этот элемент отображается на странице, если элемент не отображается, прокрутите страницу вниз, а затем выполните действие click.

Ответ 2

Использование

driver.findElement(By.linkText("App Configuration")).click()

Другие подходы будут

JavascriptLibrary jsLib = new JavascriptLibrary(); 
jsLib.callEmbeddedSelenium(selenium, "triggerMouseEventAt", elementToClick,"click", "0,0");

или

((JavascriptExecutor) driver).executeScript("arguments[0].click();", elementToClick);

Подробный ответ Просмотреть это сообщение

Ответ 3

Используйте явный wait для элемента, подобного этому:

WebDriverWait wait1 = new WebDriverWait(driver, 500);
wait1.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("path of element"))).click();

Ответ 4

  Как перейти по ссылке, не используя метод click в селене?

Это сложный вопрос. Выполните следующие действия:

driver.get("https://www.google.com");
String gmaillink= driver.findElement(By.xpath("//a[@href='https://mail.google.com/mail/?tab=wm&ogbl']")).getAttribute("href");
System.out.println(gmaillink);
driver.get(gmaillink);

Ответ 5

Попробуйте использовать класс Action для достижения элемента

Actions action = new Actions(driver);
action.MoveToElement(driver.findElement(By.xpath("//a[text()='AppConfiguration']")));
action.Perform();

Ответ 6

Кажется, что тег a скрыт. Помните, что Selenium не может взаимодействовать со скрытым элементом. Javascript - единственный вариант в этом случае.

By css = By.cssSelector("a[href='/docs/configuration']");
WebElement element = driver.findElement(css);
((JavascriptExecutor)driver).executeScript("arguments[0].click();" , element);

Ответ 7

Вы можете использовать этот метод:

Для ссылок, если вы используете linkText();, он более эффективен, чем любой другой локатор.

driver.findElement(By.linkText("App Configuration")).click();

Ответ 8

Вы можете использовать xpath следующим образом: попробуйте следующее:

driver.findElement(By.xpath("(.//[@href='/docs/configuration'])")).click();