2017-01-03 7 views
1

スタックのオーバーフローで検索しましたが、「org.openqa.selenium.NoSuchElementException:要素を見つけることができません」という回答がありましたが、私の状況に合わないようです。私はセレンをコーディングし、使用するのがとても新しいです。だから、あなたが提供できるどんな助けも素晴らしいでしょう。前もって感謝します。org.openqa.selenium.NoSuchElementExceptionテキストボックス要素を見つけることができません。

ユーザー名テキストボックスの要素を見つけたときにこのエラーが発生しています。

ファイアパスで要素を調べると、次のようになります。

 
input id="txt_658_4692" class="form-control ggo-field" required="1" data-bv-notempty-message="The field is required." data-bv-stringlength-message="255 characters to be removed." data-fv-stringlength="true" maxlength="255" data-ggo-maxlength="255" name="txt_658_4692" data-ggo-fieldtype="TEXT" data-ggo-fieldidentifier="APPLICANT_USERNAME" data-ggo-token="de6cbe2fe346a847ab301bd6147c0374" value="" type="text"/ 

Soはどこか狂ったの文字列で、私がログインにキーを送る、その後に標的にすることができる要素であると考えられる。

私はこれがある

driver.findElement(By.Id()) 
driver.findElement(By.xpath()) 
driver.findElement(By.cssSelector()) 
driver.findElement(By.name()) 

を使用して試してみましたコードの部分にエラーが表示されます

WebElement usernameTextbox = driver.findElement(By.xpath(".//*[@id='txt_658_4692']")); 
    usernameTextbox.sendKeys("russelltest1"); 

ご意見やご提案は素晴らしいと思います。

ありがとうございます。

答えて

1

webdriverがDOM内の要素を見つけることができない場合、NoSuchElementExceptionがスローされます。私はあなたのtextbox要素IDがおそらく動的に変化すると仮定して、このxpathクエリはそれが存在しないのでそれを選択できません。それは場合に役立ちます

driver.findElement(By.xpath(".//*[data-ggo-fieldidentifier='APPLICANT_USERNAME']")); 

参照してください: のようなものは、異なるXPathのセレクターをお試しください。

+0

私はdriver.findElement(By.xpath( ".//*[ id = 'txt_658_4692']"))でそれを見つけることになりました。私がコンソールを見ているとき、それは私にそれに近いものを与え続けましたが、切り落とされました。試行錯誤の問題。私の質問に答える時間をとってくれてありがとう。それは有り難いです。 – rcorless

0

また、ラベルテキストを使用してテキストボックスを識別することもできます。ユーザー名フィールドラベルがユーザーとしてtextプロパティを持っている場合たとえば、:

//label[text()='User:']/following::input[1] 

または

//*[text()='User:']/following::input[1] 

場合、それは動作しません:、あなたは次のXPathを使用して、テキストボックスを見つけることができますあなたは、ページの完全なHTMLを共有してください。それで、必要なテキストボックスの正確なパスを教えてください。

+0

私はxpathでそれを手に入れました。ありがとうございました! – rcorless

関連する問題