私はSelenium webdriverを使用しており、ログイン後に要素と対話できません。つまり、ログイン画面で要素のやりとりがうまく機能します。Pythonセレニウムは要素と対話できません
ウェブドライバはHTMLUNITSです。 Windows上でこのスクリプトを実行する必要があるため、別のヘッドレスドライバを使用したくないのです。これは、ログイン画面を通過できる唯一のドライバです。既にPhantomJSで試してみました(うまくいきませんでした)、成功しなくてもheadless_chromeを設定しようとしました。
ソースコードはここにある: https://gist.github.com/anonymous/6edf78d63d698340b1ae53a597776037
<input>
Imは対話しようとすると、ソースコードからのライン209上にあること。これと同じ:
<input id="ToolbarOkCode" ct="I" lsdata="{0:'ToolbarOkCode',1:'Command',4:200,13:'150px',23:true}" lsevents="{Change:[{ClientAction:'none'},{type:'TOOLBARINPUTFIELD'}],Enter:[{ClientAction:'submit',PrepareScript:'return\x20its.XControlSubmit\x28\x29\x3b',ResponseData:'delta',TransportMethod:'partial'},{Submit:'X',type:'TOOLBARINPUTFIELD'}]}" type="text" maxlength="200" tabindex="0" ti="0" title="Command" class="urEdf2TxtRadius urEdf2TxtEnbl urEdfVAlign" value="SM37" autocomplete="on" autocorrect="off" name="ToolbarOkCode" style="width:150px;"/>
私はform
を提出して入力した値とプレスを記述する必要があります。 button
はありません。
driver.find_element_by_id('ToolbarOkCode').send_keys('value')
driver.find_element_by_id('ToolbarOkCode').send_keys(Keys.ENTER)
は動作しませんでした:
1.はこれをしようとしました。要素が見つかりましたが、 "send_keys"アクションは機能しません。
入力フィールドを埋めるためにJavascriptを使用してみました2.は、正常に動作します:
driver.find_element_by_id('ToolbarOkCode').send_keys(Keys.ENTER)
:
driver.execute_script("document.getElementById('ToolbarOkCode').setAttribute('value', 'SM37')")
3.を次に以前のように、Enterキーを押し、同じエラーを試してみました4.submit()
イベントを送信しようとしましたが、明らかに動作しますが、フォームはまったく送信されません。
12:12:11.233 INFO - Executing: [find element: By.xpath: //input[@id='ToolbarOkCode']])
12:12:11.432 INFO - Done: [find element: By.xpath: //input[@id='ToolbarOkCode']]
12:12:11.444 INFO - Executing: [send keys: 5 <input id="ToolbarOkCode" ct="I" lsdata="{0:'ToolbarOkCode',1:'Command',4:200,13:'150px',23:true}" lsevents="{Change:[{ClientAction:'none'},{type:'TOOLBARINPUTFIELD'}],Enter:[{ClientAction:'submit',PrepareScript:'return\x20its.XControlSubmit\x28\x29\x3b',ResponseData:'delta',TransportMethod:'partial'},{Submit:'X',type:'TOOLBARINPUTFIELD'}]}" type="text" maxlength="200" tabindex="0" ti="0" title="Command" class="urEdf2TxtRadius urEdf2TxtEnbl urEdfVAlign" value="" autocomplete="on" autocorrect="off" name="ToolbarOkCode" style="width:150px;" />, [S, M, 3, 7]])
12:12:12.718 WARN - Exception thrown======= EXCEPTION START ========
EcmaError: lineNumber=[1] column=[0] lineSource=[ function (oDomEvent) {] name=[TypeError] sourceName=[http://sapmig03.cge.cl:8010/sap/public/icmandir/its/ls/js/lightspeed.js?600#3(eval)] message=[TypeError: Cannot call method "setOpenerRef" of null (http://sapmig03.cge.cl:8010/sap/public/icmandir/its/ls/js/lightspeed.js?600#3(eval)#1)]com.gargoylesoftware.htmlunit.ScriptException: TypeError: Cannot call method "setOpenerRef" of null (http://sapmig03.cge.cl:8010/sap/public/icmandir/its/ls/js/lightspeed.js?600#3(eval)#1)
:前と同じエラーを受け取っ
driver.find_element_by_xpath("//input[@id='ToolbarOkCode']").send_keys("SM37")
driver.find_element_by_xpath("//input[@id='ToolbarOkCode']").send_keys(Keys.ENTER)
:
driver.find_element_by_id('ToolbarOkCode').submit()
TEST
はこれでも試しましたか?
THanks in advance!
これは手動で行うことができますか? –
はい、手動で動作します。 –