2017-02-02 3 views
0

私はしばらくそれに固執しているので、私は助けを求めるだろうと思った。 ビルドされたfindElement APIで使用するページファクトリメカニズムを使用して、名前で要素を検索しようとしています。要素はWebページにありますが、まだそれを見つけることはできません。誰かが私が間違っている点を指摘できますか?ありがとう。Selenium Webdriver:NoSuchElementException

@FindBy(how = How.NAME, using = "userName") 
private WebElement userName; 

public WebElement getUserName() { 
    return userName; 
} 

homepage.getUserName().sendKeys("test"); 
+0

複数のエラーログに関する情報の追加:org.openqa.selenium.NoSuchElementException: 要素が見つかりません:{「方法」:「名前」、「選択」:「userNameに」} コマンド期間またはタイムアウト:16ミリ秒 をこのエラーのドキュメントについては、下記をご覧ください:バージョン: '2.53.1'、リビジョン: 'a36b8b1cd5757287168e54b817830adce9b0158d'、時間:「2016年6月30日19 http://seleniumhq.org/exceptions/no_such_element.html は、情報をビルドします。 26:09 ' – Tajinder

答えて

1

コードは正常です。しかし、その時間までにページが読み込まれない可能性があるので、sendKeysの前に待機を追加する必要があるかもしれません。

WebDriverWait wait = new WebDriverWait(driver, new TimeSpan(0,0,5)); 
wait.Until(By.Id("login")); 

希望します。

+0

ありがとうサクシ。待ち時間を追加すると根本的な原因を見つけるのに役立ちました。 junitテストが非決定的な順序で実行されるときに空のページに要素を見つけることを試みていたことを待って追加した後にそれを見ることができました:)私はテストを互いに独立させることで修正しました。私は今、きれいな状態で各テストを開始しています(ウェブサイトを最初から開いて実行するごとに)。すべてがうまくいきます。また、JUnit 4.1.2では、 "@FixMethodOrder"を使ってテストを実行する順序を制御できるようになりましたが、テストは独立して実行する必要があるため、実行しないことをお勧めします。 – Tajinder

+0

@Tajinder:これがあなたの質問に答えるなら、答えとしてマークしてください –