webentwicklung-frage-antwort-db.com.de

So klicken Sie mit Selenium auf einen Href-Link

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.

13
Psl
 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.

20
Saritha G

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

9
Arjit

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();
3
Juhil Somaiya

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();
1
Salman Arshad

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);
0
Saifur

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();
0
Nitinkumar

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);

0
user11905979