2012-03-27 4 views
2

私はJavaでfirefoxでwebdriverを使用しています。 私は例えば、注釈を使用して要素を探しています:なぜSeleniumがNoSuchElementExceptionに関する情報を提供しないのですか

@FindBy(id = "terminal") 
private WebElement selectTerminal; 

は、そのページをレンダリングするのに失敗したと言うことができますし、何らかの理由で、この要素が描画されません。エラーメッセージは非常にあいまいであると私はデバッグにその非常に難しい、ジェンキンス上でリモートテストを実行している場合や、正確に起こったか見て、例えば:

私はセレクタを含むことになり、より詳細な情報を得ることができますどのように
The element could not be found (WARNING: The server did not provide any stacktrace information) 
Command duration or timeout: 72 milliseconds 
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html 
Build info: version: '2.20.0', revision: '16008', time: '2012-02-28 15:00:40' 
System info: os.name: 'Linux', os.arch: 'i386', os.version: '2.6.32-312-ec2', java.version: '1.6.0_20' 
Driver info: driver.version: RemoteWebDriver 

?もちろん、私は試して/キャッチなどのヘルパーメソッドのいくつかの種類でそれをラップすることができます。しかし、私はそれがセレクタを表示していない理由知っていると、どのように私はその警告を取り除くことができますか?

ありがとうございます!

+0

また、このウェブページはあまり役に立ちません。これは本当に痛みであり、私は解決策を楽しみにしています。私の場合、それはカスタムキャッチで、セレクタを記録してスクリーンショットを撮った。 –

+0

org.openqa.selenium.remote.ErrorHandlerクラスのソースを見ると、次のようなコメントが表示されるので、これは予期される動作です:// serverErrorがnullの場合、サーバはclassNameを提供しませんでした( //サーバーはJavaプロセスです)またはスタックトレース。 classNameの欠如はOKですが、 // stacktraceを持たないと、問題をデバッグする能力が本当に損なわれます。 – gerasalus

+0

私はPHPで同様の問題を抱えていましたが、try/catchブロックでラップすることにもなりました。それの唯一のものだと思われる... – Potherca

答えて

0

これは理想的な解決策ではありませんが、同じ問題で私を助けてくれました。

webdriverのシステムプロパティを設定してファイルにロギングを有効にします。

-Dwebdriver.firefox.logfile=/tmp/ff.log 

したり、テストコードでエラーが発生した場所、例えば

System.setProperty("webdriver.firefox.logfile", "/tmp/ff.log") 

はその後ff.logに、あなたは出力が表示されます

[6.389][FINE]:  Command received (/session/5a4c8a0a7ef5453467687267348e8cb3/element) with params { 
"using": "xpath", 
"value": "//input[@class='login-submit'] 
} 

[6.389][FINER]:  Waiting for all views to stop loading... 
[6.390][FINER]:  Done waiting for all views to stop loading 
[6.505][FINER]:  Waiting for all views to stop loading... 
[6.506][FINER]:  Done waiting for all views to stop loading 
[6.506][WARNING]: Command finished (/session/5a4c8a0a7ef5453467687267348e8cb3/element) with response { 
    "sessionId": "5a4c8a0a7ef5453467687267348e8cb3", 
    "status": 7, 
    "value": { 
    "message": "The element could not be found" 
} 
} 

少なくとも今私はそれがのXPathに基づいた要素を参照することができます。これはChromeDriverでもうまく機能します

関連する問題