2017-08-27 28 views
1

パスワードフィールドにテキストを送信しようとしていますが、他のフィールドはすべて正しく入力されています(パスワードフィールドのXPathも正しい - .//*[@id='Password'])パスワードとパスワードの確認フィールドには表示されません。正しいXPathですが、SeleniumでsendKeys()が動作しません

電子メール/ユーザー名を送信した後にページ(並べ替え)を更新すると(「このユーザー名が利用可能」または「利用できません」と表示されます)、これはパスワードフィールドのみに影響します..

私はどのように私が使用しているXPathとして問題を解決するには正しいことを確認していない..

任意のアイデア?

おかげ

P.S

は、一部の人々は、電子メールの検証は、おそらく正しいエラーを引き起こしていると言います。しかし、私が追加するとき:

  driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS); 

それは問題を解決していないようです。時にはそれは動作しますが、ほとんどの場合動作しません。

+0

は、パスワードを入力する前に、いくつかの待機を入れてみてください。 – Kapil

+0

参照:[Xを行うには?](https://meta.stackoverflow.com/questions/253069/whats-the--new-current-close-reason-for-how-do-i-do- x)SOに関する期待は、質問をするユーザーが自分の質問に答えるだけでなく、その研究、コードの試行、結果を共有するということです。これは、時間をかけて自分自身を助けようとしていることを示しています。明白な回答を繰り返さないようにしてくれています。そして、より具体的で適切な答えを得ることができます。参考:[ask] – JeffC

+0

@ Kapil彼は、driver.manage()。timeouts()。implicitlyWait(15、TimeUnit.SECONDS);を実行しました。 –

答えて

0

電子メールの検証により問題が発生しました。あなたはサイトが検証された電子メールを送信し、セレンはその間にパスワードを送信しようとしますが、見つけることができなかったら、要素が焦点を当て、それがパスワードフィールドに焦点を当てることができませんでしたので、スローやスロー:

Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: cannot focus element

をあなたが持っているパスワードを送信する前にemailidが有効になるまで待って(電子メールの検証にどれくらいの時間がかかるかを分析して)、パスワードを送信してください。ここではThread.sleep()がそうする手助けをします。しかし、それはあなたの要素が与えられた時間の前に扱いにくい与えられた時間イベントのためにあなたのスクリプトを一時停止するので、それはお勧めしません。

もう1つの推奨事項は、エレメントIDを持っていれば、xpathを使用しないようにしてください。driver.findElement(By.id("Password"))のように同じものを見つけることができます。スクリプトのサンプルコードについては

ができ:

driver = new ChromeDriver();  
driver.manage().window().maximize(); 
driver.get("https://signup.live.com/"); 
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
driver.findElement(By.id("FirstName")).sendKeys("test"); 
driver.findElement(By.id("LastName")).sendKeys("user"); 
driver.findElement(By.id("MemberName")).sendKeys("[email protected]"); 
Thread.sleep(10000); 
driver.findElement(By.id("Password")).sendKeys("testone1#"); 
driver.findElement(By.id("RetypePassword")).sendKeys("testone1#"); 
+1

'Thread.sleep()'は悪い習慣です。あなたは 'WebDriverWait'を使うべきです。 – JeffC

+0

@ JeffC、あなたはwebdriverwaitという条件で答えを投稿できますか?処理できない要素エラーは処理できません。掲載されたOPと同じURLを使用してください。あなたがセレンのポストでthread.sleepを見るたびに、あなたは – NarendraR

+1

の投票を好むのですが、私はそれを試してみましたが、問題は何も見ていません。実際に何が起こっているのかを知るのは難しいです.Thread.sleep()はよく書かれている悪い習慣ですので、あなたや他の誰かが答えにそれが必要な理由を説明しない限り、その特定の場合 – JeffC

関連する問題