2012-04-15 10 views
3

Ich benutze Selenium, um eine Webseite zu navigieren, die eine Verbindung hat, die "Mail" genannt wird, WebDriver verwendend (kürzlich von RC zu WebDriver geschaltet). Ich möchte auf dem Link klicken, aber der Testfall nicht immer mit dem Fehler:WebDriver kann Element nicht finden (link/Java)

org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"link text","selector":"Mail"}

Wenn das Element mit Firebug Inspektion ich folgendes HTML erhalten:

<a href="url/New-Doc" target="_top" fahidden="false" faswid="e-switcher-mail" faprop="p-e-switcher-function-id">Mail</a>

Dies ist die Java, die versucht, klicken, um den Link: kann

driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); 
driver.findElement(By.linkText("Mail"));  
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); 

ich sehe, dass das Element auf dem Bildschirm vorhanden ist, aber der Testfall immer noch nicht.

Weiß jemand, was ich hier fehlen könnte oder eine alternative Möglichkeit, das Linkelement zu finden?

+0

könnten Sie versuchen, 'driver.findElement (By.cssSelector (" eine [href = 'url/New-Doc'] ")). Click();'. Wenn das nicht funktioniert, ist Ihr Link in einen Iframe eingebettet? Oder in einer Art Hover-Menü? – Tarken

Antwort

1

Versuchen Sie über XPath. Beispiel:

driver.findElement(By.xPath("/a[text()='Mail']")); 

Würde auch lohnen doppelte Kontrolle da sein, um sicherzustellen, sind keine Iframes auf der Seite.

+3

Sie waren direkt auf den iframes, die zur Ausführung von driver.switchTo() benötigt werden. Frame ("MainFrame"); bevor Sie versuchen, auf den Link zu klicken, danke! – bobbyrne01

+0

Du bist 'iframe' Kommentar hat mir eine Menge Kopfschmerzen erspart. Danke, dass Sie erklärt haben, wie Sie zu Ihrer Lösung gekommen sind. – FilmiHero

0

Bisher ist die beste Abhilfe, die ich für Fälle wie diese gefunden:

  • Öffnen Sie Firefox mit Selenium IDE
  • In Firefox öffnen Sie die Testseite
  • Run Selen IDE, starten Sie die Aufnahme installiert und klicken Sie auf die link
  • Selenium IDE bietet Ihnen Möglichkeiten, wie Sie das Ziel zu lokalisieren. Wenn Sie zu relativen XPath wechseln, sollte es die Magie tun (Oder, in meinen Fällen half es immer)
1

Sogar ich hatte diese Situation einmal konfrontiert. Sehen Sie sich Ihren Quellcode an und finden Sie heraus, ob sich das gesuchte Element in einem Frame befindet. Wenn ja, wechseln Sie zuerst zu dem Frame, in dem sich das Element befindet, und suchen Sie dann nach dem Element. So hat es für mich funktioniert.

Verwandte Themen