2016-05-10 5 views
0

javaでクロムドライバとセレンを使用しています。Selenium - xPathで検索する要素が実行中に見つかりませんでしたが、ブラウザ上に見つかりました。

これは私のJavaコード上にあります。私がその特定のページの午前ながら、私が興味を持って実行されます。

driver.findElement(By.xpath("//input[@name='firstName']")).sendKeys("John"); 

これは、その特定のページに、ウェブサイト上にあります。

<input type="text" id="fname" name="firstName" placeholder="First Name" data-reactid="...."> 

問題も入力するテキストを設定に関するものではありません、それがすべてで入力フィールドを見つけられないということです。あなたは、私は20秒の暗黙の待機を持っていると私はページとフィールドがその時にロードされていることがわかりますエラーから見ることができるようにここでエラー

org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//input[@name='firstName']"} 
Command duration or timeout: 20.04 seconds 
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html 
Build info: version: '2.53.0', revision: '35ae25b', time: '2016-03-15 16:57:40' 

です。

私はchromeを開いてxPathで要素を検索し、同じ正確なコマンドでフィールドを見つけることができます(私のjavaが同じクロムウィンドウでクラッシュしたのと同じページで)。私は入力フィールド以外のすべての要素を見つけることができます。

これをトラブルシューティングする方法はありますか?入力フィールドはセレンを介してこのようにサポートされていませんか?私は何を引き受けるのかわからない、どんなアイデアも大いに感謝している!

+2

多分あなたの入力がインラインフレームの内側にあります。要素を見つけようとする前に、このフレーム内の要素を調べるためにドライバを切り替える必要があります。 –

+0

そうです。私はこれを行うべきであることに気づいていませんでした。にスポット!本当にありがとう! – Iordanis

+0

時には別の軽いエラーがあります。だから私はawnserを投稿していない、あなたにフレームを確認するように頼んだだけです。さて、あなたのテストの中でiframeを管理する方法の例を投稿しました。がんばろう! –

答えて

1

あなたの要素をアセスするためのiframeを処理する必要があります。

// This way allows you to select an iframe using 'By' and access it. 
driver.switchTo().frame(driver.findElement(By.id("frameId"))); 

// Now you can only handle the iframe elements, like your request 
driver.findElement(By.xpath("//input[@name='firstName']")).sendKeys("John"); 

// After execute all that you need inside the iframe, 
// returns you to default html, outside the iframe. 
driver.switchTo().defaultContent(); 
関連する問題