Selenium typeKeysは、入力された文字列からドットを取り除きます
質問
次の指示
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
メソッドを使用します。
このコマンドには、 目に見える効果、場合でも キーを入力すると、通常は 目に見える効果
...
場合によっては、 単純な「タイプ」を使用する必要があります。コマンド フィールドの値を設定してから " 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);
それは魅力のように機能します!