【Selenium】文字入力中にカーソルが別のフォームに移動してしまう
背景
次のようにして、全画面コピーした内容をテキストエリアに入力する処理を作っていました。
js = "
document.execCommand('SelectAll');
return window.getSelection().toString();
"
str = driver.execute_script(js)
driver.find_element(:id, 'hoge').send_keys(str)
ところが、入力中に別のフォームに移ってしまい、入力がめちゃくちゃになってしまいました。
結論
send_keys
で入力する前に、replace()
関数を利用して\t
を置き換える。
js = "
document.execCommand('SelectAll');
return window.getSelection().toString().replace(/\t/g, ' ');
"
str = driver.execute_script(js)
driver.find_element(:id, 'hoge').send_keys(str)
\tとは
バックスラッシュ記法で「タブ」を意味しています。
全画面コピーした際に紛れ込んでいた\t
によって、カーソルが移動していたようです。
replace()関数
次のようにすることで、「str」中の「対象」を「置換後」に置き換えることができます。
str.replace('対象', '置換後')
このままでは1回しか置き換えられないので、置き換えたい対象が複数ある場合は正規表現のgフラグを使用する必要があります。
str = 'hogehogehoge';
str.replace('hoge', 'fuga'); // 'fugahogehoge'
str.replace('/hoge/g', 'fuga'); // 'fugafugafuga'
これを利用して文中含まれるすべての\t
をに置き換えました。
参考
Author And Source
この問題について(【Selenium】文字入力中にカーソルが別のフォームに移動してしまう), 我々は、より多くの情報をここで見つけました https://qiita.com/mk_23/items/54251f5d6388c7f69678著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .