前提・実現したいこと
とあるチャットサイトで、Seleniumでtextareaに絵文字入りのテキストを入力&Returnキーで
送信したいのですが、Returnキーが反応せず、送信できなくなりました。
テキスト入力まではできます。
対処方法を助言いただけないでしょうか。
このサイトでは、送信ボタンなどもなく、Returnキーのみのチャット送信になっています。
以前はReturnキーでテキストを送信できていましたが、期間を置いて試したところ、
送信できなくなりました。
SeleniumもしくはJavascriptでReturnキーを有効化&送信できるような方法がないか、
もしくは、そのほか対処方法があれば、助言いただけないでしょうか。
ソースコードは以下になります。
発生している問題・エラーメッセージ
下記コードをChromeで実行してますが、Pythonのログも、 Chromeデベロッパーツールのconsoleも、エラーは発生していません。
該当のソースコード
python
1textarea_element = u"//textarea[contains(@class,\"hoge\")]" 2 3text = u'''????test''' 4 5JS_ADD_TEXT_TO_INPUT = """ 6console.log( "start" ); 7try { 8 var elm = arguments[0], txt = arguments[1]; 9 elm.value += txt; 10 11 elm.dispatchEvent(new Event('change')); 12} catch(e) { 13 console.log( e.message ); 14} 15""" 16 17 18elem = driver.find_element(by=By.XPATH, value=textarea_element) 19 20driver.execute_script(JS_ADD_TEXT_TO_INPUT, elem, text) 21# driver.find_element_by_xpath(textarea_element).send_keys(text) 22 23driver.find_element(by=By.XPATH, value=textarea_element).send_keys(Keys.RETURN); 24 25
試したこと
・textは、「u'''test'''」に変えても送信できません。
・コメントアウトしているsend_keysで実行する場合、「u'''test'''」は送信できますが、
絵文字を交えた「u'''????test'''」で送信するとエラーが発生する
(unknown error: ChromeDriver only supports characters in the BMP)ため、
send_keysは使わず、execute_scriptを使っています。
・Seleniumでtextareaに自動入力後、手動でReturnキーを叩いても、
Returnキーが作動しません。
ただし、自動入力後のテキストに、手入力で先頭に任意の1文字入力した場合は、
正常にReturnキーが作動します。
※この挙動がよく分かっていないのですが、サイト側で、textareaのSeleniumの入力を検知して、
Returnキーの作動を止めているのでしょうか。。。
補足情報(FW/ツールのバージョンなど)
Google Chrome Canary:84.0.4134.0
ChromeDriver:83.0.4103.14
selenium(pipでインストール):3.141.0
Python:3.7.6
回答3件
あなたの回答
tips
プレビュー