2012-04-15 23 views
3

私はSeleniumを使用してWebDriver(最近RCからWebDriverに切り替えました)を使用して、 "Mail"というリンクを持つWebページをナビゲートしています。私は、リンクをクリックしたいが、テストケースは常にエラーで失敗します。WebDriverが要素を見つけることができません(リンク/ Java)

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

Firebugの持つ要素を検査するとき、私は、次のHTMLを取得:

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

をこれがしようとしているJavaのです

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

要素が画面に表示されていることがわかりますが、テストケースが失敗します。

私はここに欠けているかもしれないか、リンク要素を見つける別の方法を知っていますか?

+0

「driver.findElement(By.cssSelector( "a [href = 'url/New-Doc']"))。click(); 'を試すことができます。それがうまくいかない場合、あなたのリンクはiframeの中に埋め込まれていますか?または、ある種のホバーメニューで? – Tarken

答えて

1

XPathで試してみてください。例:

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

ページにiframeが存在しないことを確認することも重宝です。

+3

あなたはiframe上で、driver.switchTo()。frame( "MainFrame");を実行する必要があります。リンクをクリックしようとする前に、ありがとう! – bobbyrne01

+0

あなたは 'iframe'のコメントにより、私に頭痛の種がたくさん保存されました。あなたのソリューションにどのようになったのかを説明してくれてありがとう。 – FilmiHero

0

は、これまで最高の私はこのような例が見つかり回避策:セレンIDEと

  • オープンFirefoxはFirefoxで
  • をインストールし、テストページ
  • 実行セレンIDEを開き、記録を開始し、クリックしてくださいリンク
  • Selenium IDEは、ターゲットの検索方法を提供します。相対XPathに切り替えると、魔法が効くはずです(あるいは、私の場合は常に助けになります)
1

でも、私はこの状況に一度直面していました。ソースコードを表示し、探している要素がフレーム内にあるかどうかを調べます。はいの場合は、最初にエレメントが配置されているフレームに切り替えて、そのエレメントを探します。それは私のためにこのように働いた。

関連する問題