Ich habe einen html href
-Link
<a href="/docs/configuration">App Configuration</a>
mit Selenium muss ich auf den Link klicken. Derzeit verwende ich folgenden Code -
Driver.findElement(By.xpath("//a[text()='App Configuration']")).click();
Es wird jedoch nicht auf die Seite umgeleitet. Ich habe auch folgenden Code ausprobiert -
Driver.findElement(By.xpath(//a[@href ='/docs/configuration']")).click();
Aber das ist unter der Ausnahme -
org.openqa.Selenium.ElementNotVisibleException: Das Element ist zurzeit nicht sichtbar und kann daher nicht mit .__ interagiert werden. Befehlsdauer oder Timeout: 13 Millisekunden
Der Link ist sichtbar und die Seite ist vollständig geladen. Ich weiß nicht, was mit meinem Code falsch ist.
webDriver.findElement(By.xpath("//a[@href='/docs/configuration']")).click();
Die obige Zeile funktioniert gut. Bitte entfernen Sie das Leerzeichen nach href.
Ist das Element auf der Seite sichtbar? Wenn das Element nicht sichtbar ist, scrollen Sie die Seite nach unten und führen Sie eine Klickaktion aus.
Benutzen
driver.findElement(By.linkText("App Configuration")).click()
Andere Ansätze werden sein
JavascriptLibrary jsLib = new JavascriptLibrary();
jsLib.callEmbeddedSelenium(Selenium, "triggerMouseEventAt", elementToClick,"click", "0,0");
oder
((JavascriptExecutor) driver).executeScript("arguments[0].click();", elementToClick);
Für detaillierte Antwort, Diesen Beitrag anzeigen
Verwenden Sie eine explizite wait
für das Element wie folgt:
WebDriverWait wait1 = new WebDriverWait(driver, 500);
wait1.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("path of element"))).click();
Versuchen Sie, mit der Action-Klasse das Element zu erreichen
Actions action = new Actions(driver);
action.MoveToElement(driver.findElement(By.xpath("//a[text()='AppConfiguration']")));
action.Perform();
Scheint, als sei das a
-Tag ausgeblendet. Denken Sie daran, dass Selen nicht mit verborgenen Elementen interagieren kann. In diesem Fall ist Javascript
die einzige Option.
By css = By.cssSelector("a[href='/docs/configuration']");
WebElement element = driver.findElement(css);
((JavascriptExecutor)driver).executeScript("arguments[0].click();" , element);
Sie können diese Methode verwenden:
Wenn Sie linkText();
verwenden, ist dies für die Links effektiver als der andere Locator.
driver.findElement(By.linkText("App Configuration")).click();
Das ist eine knifflige Frage. Befolgen Sie die folgenden Schritte:
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);