0

Selenium で WebElement を取得しようとしています:

driver.findElement(By.xpath("//input[@name='j_username']"))

しかし、Seleniumは「XPathで要素が見つかりません...」と言います。XPath は有効です。FirePath で証明しました。しかし、入力要素には次の無効なコードがあります:

<input size="10" type="text" name="j_username" maxlength="8">

webElement を取得する解決策があるにもかかわらず、html ファイルを変更できませんか? 前もって感謝します!

4

3 に答える 3

1

cssセレクターで要素を選択してみてください。また、firepath(要素が適切に配置されていることをfirebugアドオン)で確認します。あなたのCSSセレクターは次のようになります

input[name='j_username']

2 番目のアプローチは、要素の xPath を見つけるために内部の firebug メカニズムを使用することです。下に添付されている画面を参照してください ここに画像の説明を入力

これらの操作の後、ドライバーは要素を適切に処理する必要があります。

于 2012-09-27T22:58:30.103 に答える
0

さて、私はあなたのhtmlコードにIDを追加することを提案します-

<input id="j_username"size="10" type="text" name="j_username" maxlength="8">

およびfindElementbyid-

driver.findElement(By.id("j_username"));

xpathで同様の問題(borwserの問題??)に直面しましたが、idが失敗することはありません。;)

ちなみに、あなたのコードは-

driver.findElement(By.xpath(".//*[@name='j_username']"));
于 2012-10-01T11:09:36.050 に答える
0

最善の解決策は、selenium の何が問題なのかを突き止めることですが、テストするための URL やサンプル ページがなければ、少し難しいでしょう。HTMLをjsfiddleにダンプできる方法はありますか? ある場合は、その URL を質問に貼り付けてください。誰かが解決策を見つけることができると確信しています。

ただし、結果を取得する別の方法は、jQuery を使用することです。firebug がそれを拾っているが、セレンは拾っていない場合、jQuery がそれを取得しない理由はありません。必要に応じてそれを行う方法は次のとおりです。

ステップ 1: jQuery は既にページに存在しますか? その場合は、このビットを実行する必要はありません。それ以外の場合はdriver.executeScript(addjQueryScript)、スクリプトがこのようなことを行う場所を使用して、自分で追加する必要があります。

ステップ 2:WebElement input = driver.executeScript(elementSelector); elementSelector スクリプトが次のようになる場所を呼び出します\"return $('input[name=\"j_username\"]')\");

私のjQueryはあまり良くありませんが、うまくいくはずです...

頑張ってください!

于 2012-10-05T13:40:33.597 に答える