Как нажать ссылку 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();