1

Seleniumを使用して Web ページを自動化しています。

私の問題は、セレンが隠しフィールドにテキストを入力できないことです。使った

selenium.type("xpath of hidden field","some text");

しかし、それは機能していません。エラーは発生していませんが、その非表示フィールドに何も入力していません。

例: Gmail の本文フィールドにテキストを入力する (メールの作成中)。 this is the exact example of my issue

ラッドエディターです。コードは次のようなものです(ここでは、テキストは内部に保存されていますiframe-->html-->body

<iframe id="iframe1">
<html>
<body> This is some text </body>
</html>
</iframe>

テキストを追加しようとしているフィールド

4

2 に答える 2

1

Selenium に非表示の要素を強制的に入力させる方法はありません。

これは機能しますか?Javascript を使用document.evaluate()して XPath で要素を検索し、見つかった要素の に直接入力しますvalue

selenium.GetEval(
        "var xpath = '//XPath/to/your/element';" +
        "var text = 'some text to input into the element'" +
        "var elem = window.document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);" +
        "elem.singleNodeValue.value = text;" );

そうでない場合は、FireBug で実行してみて、結果 (またはエラー) をここに投稿してください。


次に試みることは、要素を可視化することです...


編集 - 上記は機能しません

あなたは一箇所ですべての問題が好きです:)

  1. アンiframe。内部の何かを操作する前に、それを選択する必要があります。
  2. iframeが別のドメインから何かをロードすると、JavaScript の同一オリジン ポリシーが適用されます。また、Selenium RC は純粋な JavaScript で記述されているため、何もできません。WebDriverこれに悩まされていないものに切り替えるか、の内部アドレスでブラウザを再度開いてみてくださいiframe。しかし、うまくいかないかもしれません。
  3. bodyタグはiframeによって解決されcontenteditableた問題です。Selenium RC も同様にそれに入ることができるはずです。WebDrivertype()
  4. 目に見えないtextarea. それがあなたの最後の問題です。bodySelenium RC は目に見えない要素の操作を拒否するため、実際に書き込む必要がある場合 ( editable があります)、JavaScript を使用する必要があります。
于 2012-06-26T08:07:21.420 に答える
0

これはRadEditorであるため、テキストは内部に入りますiframe-->html-->bodyこれは私の場合です。エディターによって異なる場合があります)

したがって、テキストを書き込むには、最初にiframeを選択する必要があります。次に、テキストを入力する必要があります。これは次のように行うことができます

selenium.SelectFrame("xpath_of_iframe"); //Selecting the iframe
selenium.Type("//html/body","Thank you"); //Inserting the text

これで、コードが次のように変更されます

<iframe id="iframe1">
<html>
<body> Thank you </body>
</html>
</iframe>

ありがとうございました。

于 2012-06-27T05:50:18.267 に答える