2016-11-12 10 views
-1

私はselenium web-driverを初めて使いました。単純なログイン自動化を試みています。ここ は、eBayのログインページへのリンクです:ここではhttps://signin.ebay.com/selenium - javaを使用してダイナミックページの要素を見つける方法?

は、ユーザー名の入力ボックスのHTMLコードです:ここで

<input size="40" maxlength="64" name="2045849967" id="2045849967" type="text" autocapitalize="off" autocorrect="off" placeholder="Email or username" class="fld">

はhtmlコードですパスワード入力ボックスの場合:

ここで

<input size="40" maxlength="64" name="955270437" id="955270437" type="password" autocapitalize="off" autocorrect="off" placeholder="Password" class="fld">

ユーザ名とパスワードの入力ボックスにのSendKeysにしようと私のコードです:

driver.findElement(By.id("2045849967")).sendKeys("[email protected]"); 
driver.findElement(By.id("955270437")).sendKeys("somePassword"); 

問題は、それはだから、私は、これらのIDによって要素を見つけることができないということですページがロード/リフレッシュされるたびに変更されます。 すべてのIDは完全に変更されています。 問題を解決するための選択肢は何ですか? おかげ

UPDATE: 私は、ログインページで「登録」要素を見つけると「タブ」をクリックすることで、ユーザー名ボックスに入るために成功したが、今私は、ユーザー名ボックスにいる時、私はしないでください私は実際にusername要素を持っていないので、私はどのように 'SendKeys'を入れることができるか知っています。今、私はここから続けることができるか

WebElement regElement = driver.findElement(By.id("regTab")); 
 
regElement.sendKeys(Keys.TAB);

:ここ

は、コードのですか? ユーザ名を入力してから[Tab]をもう一度クリックしてパスワードを入力する必要があります。 オプションは何ですか?あなたはどうやらこれら

By.cssSelector("input[placeholder='Email or username']") 
By.cssSelector("input[placeholder='Password']") 

を使用することができます

+0

CSSやXPathのロケータで試してみてください。 – Grasshopper

答えて

1

、これは失敗したが、電子メールフィールドの2試合があり、最初のものが隠されています。これらのセレクタは引き続き使用できます。最初のロケータの2番目の一致を取得するだけで済みます。

driver.findElements(By.cssSelector("input[placeholder='Email or username']")).get(1).sendKeys("abc"); 
driver.findElement(By.cssSelector("input[placeholder='Password']")).sendKeys("abc"); 
+0

それは動作しません..他の何か?なぜそれがうまくいかないのか?プレースホルダは実際には変更されていないためです。 – Shimi

+0

作業コードで答えを更新しました。 – JeffC

+0

ありがとうございます! – Shimi

0

この問題の解決策が見つかりました。

 WebElement regElement = driver.findElement(By.id("regTab")); 
 
\t \t regElement.sendKeys(Keys.TAB); 
 
\t \t WebElement currentElement = driver.switchTo().activeElement(); 
 
\t \t currentElement.sendKeys("[email protected]"); 
 
\t \t currentElement.sendKeys(Keys.TAB); 
 
\t \t currentElement = driver.switchTo().activeElement(); 
 
\t \t currentElement.sendKeys("somePassword"); 
 
\t \t 
 
\t \t driver.findElement(By.id("sgnBt")).click();

関連する問題