質問

次の指示

Selenium.typeKeys("location", "gmail.com");

gmail.com の代わりに文字列 gmailcom を入力します。

そこで何が起こっているのですか?

コメントから:
私はオートフィルをシミュレートしようとしていますが、現在セレンでそれを行う唯一の方法は、typeとtypeKeysを組み合わせることです。例:

selenium.type("assigned_to", split[0]+"@");
selenium.typeKeys("assigned_to", "gmail.com");

今、私の質問は、typeKeysがgmail.comの間に「ドット」を入力しないのはなぜですか?

役に立ちましたか?

解決

ネイティブキー機能と javascript文字コード? それらを使用して「ピリオド」文字を取得することはできませんでした(char 190)が、10進数(char 110)が正常に機能するようになり、テキストボックスにも問題はないはずです。

selenium.Focus("assigned_to");
selenium.Type("assigned_to", split[0]+"@");
selenium.TypeKeys("assigned_to", "gmail");
selenium.KeyPressNative("110");
selenium.TypeKeys("assigned_to", "com");

他のヒント

type メソッドを使用します。

タイプキーのjavadoc

  

このコマンドには、   目に見える効果、場合でも   キーを入力すると、通常は   目に見える効果

     

...

     

場合によっては、   単純な「タイプ」を使用する必要があります。コマンド   フィールドの値を設定してから   " typeKeys"送信するコマンド   何に対応するキーストロークイベント   入力したばかりです。

Selenium pythonでtypekeysを使用すると、同様の問題が発生しました。

この問題を解決するために考えた回避策の1つは、「type」と「type_keys」の組み合わせを使用することです。ご存知のように、タイプにはそのような問題はありません。

セレンのpythonスクリプトでこれを行いましたが、問題なく動作します。

例: テキストボックスに入力するメールアドレスがある場合:test.me@test.me.uk

その後、

type(locator,’test.me@test.me.’)
type_keys(locator,’uk’)

たぶん非常に粗雑な方法ですが、それは仕事をしました。

同様の問題を抱えている他の人の助けになることを願っています。

また、書き込む前に要素にフォーカスを設定してみてください。

selenium.focus(locator);
selenium.typeKeys(locator, value);

私の場合、入力タイプ=パスワードを処理しました。

typeKeys を使用して入力する文字列が" abc.xyz.efg"であるとします。次に、 type および typeKeys コマンドを使用して、指定された文字列を書き込むことができます。

type(locator,"abc.xyz.")
typeKeys(locator,"efg")

上記の2つの手順は、ドロップダウンボックスで要素を選択する場合に便利です。ドロップダウンは、typeKeysコマンドを使用する場合にのみポップアップします。

また、Selenium RC(C#)を使用し、異なる文字(たとえば、入力操作から文字に続く文字を削除するように見える 'y')を使用するときに、この動作が見られます。

状況によっては、TypeKeysまたはKeyPress関数を使用してキーを入力することで問題を回避することは完全に可能ですが、フィールドにテキストを入力するときに機能するソリューションを見つけることができませんでした制御文字([Enter]または改行など)を入力してから、さらにテキストを入力します。(この場合、 'Type'機能を使用すると、フィールドの内容が単純に上書きされます...)

この問題の合理的な解決策を見つけた人がいたら、この質問に追加してください。Googleで登場し始めており、おそらく多くの人を助けてくれるでしょう。 ..)

これはSeleniumの未解決のバグです(バグ SEL-519 )。

それをいじくり回した後、ようやく「。」と入力しました。 JavaScriptを使用してテキストエリアに移動します。 storeEval などを使用して、 window.document.getElementById( 'assigned_to')。value + = '。' のようなものを実行します。

同じ動作になりましたが、文字列ではなく変数をTypeコマンドに渡すことで修正しました。

string email = @"name@gmail.com";
selenium.Type(inputfield, email);

それは魅力のように機能します!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top