2017-12-27 2 views
0

私のクロームセレンブラウザにいくつかのJavaScriptコードを注入しようとしています。 javascriptには1回だけ有効なトークンが含まれているため、javascriptは1回しか実行できません。私が使用しているJavaScriptを注入するには、次のJavascriptをセレニウムのPythonに注入する - > converted_args})['value']

toinjectはこのJavaScript含ま
driver.execute_script(toinject) 

:私はjavascriptのテスターを使用して、それを実行した場合、それは動作しますので、それは正しいです、かなり特定の非常に長いが、イムある

javascript:(function(){ var f = document.createElement("form"); f.setAttribute("id","destroyer"); f.setAttribute("method","post"); f.setAttribute("action","http://www.adidas.ch/on/demandware.store/Sites-adidas-CH-Site/default/Cart-MiniAddProduct?clientId=c1f3632f-6d3a-43f4-9987-9de920731dcb"); var masterPid = document.createElement("input"); masterPid.setAttribute("type","hidden"); masterPid.setAttribute("name","masterPid"); masterPid.setAttribute("value","BY9913"); var pid = document.createElement("input"); pid.setAttribute("type","hidden"); pid.setAttribute("name","pid"); pid.setAttribute("value","BY9913_620"); var ajaxOption = document.createElement("input"); ajaxOption.setAttribute("type","hidden"); ajaxOption.setAttribute("name","ajax"); ajaxOption.setAttribute("value","true"); var responseOption = document.createElement("input"); responseOption.setAttribute("type","hidden"); responseOption.setAttribute("name","layer"); responseOption.setAttribute("value","Add To Bag overlay"); var quantity = document.createElement("input"); quantity.setAttribute("type","hidden"); quantity.setAttribute("name","Quantity"); quantity.setAttribute("value","1"); var sessionSelectedStoreID = document.createElement("input"); sessionSelectedStoreID.setAttribute("type","hidden"); sessionSelectedStoreID.setAttribute("name","sessionSelectedStoreID"); sessionSelectedStoreID.setAttribute("value","null"); var captchaToken = document.createElement("input"); captchaToken.setAttribute("type","hidden"); captchaToken.setAttribute("name","g-recaptcha-response"); captchaToken.setAttribute("value","03AMPJSYXHk0axYBy3sJEKk7pSbaubS9c0Du3y87zzid05zpMpMvyzWdqRQmbPqVM2cxd9j3RNjMyX7x3_NOmo7NhlJD0YjyZlwG13AIGwHZ9E0IYqX1YyxAO162pXPxZboq4M47CA9Sf2BDdwIPjHsPgOX3ELuFeWR38Su0jsrrJoQ1ti49wllmsM3EbfSM4PXoudbary0NmXrSC2qpkQ0H3SkIbW3cfiwnDPm6s5bWlznjFAwtuDBbWGm7FC2TizgPr_nVRW4hh7E9F_lEkTWS-BIQFsan2huh7z-eK1Q1WEYUC9ReDg87GoKPF0CAz3yfanh_hbfHr7yMVSxqkQznGXmNQ-tj8gfa9PVwKM5BUT_-ofQliUBgEWePQN31cStqRxDuUesGyB"); f.appendChild(captchaToken); var captchaDuplicate = document.createElement("input"); captchaDuplicate.setAttribute("type","hidden"); captchaDuplicate.setAttribute("name","x-PrdRt"); captchaDuplicate.setAttribute("value","03AMPJSYXHk0axYBy3sJEKk7pSbaubS9c0Du3y87zzid05zpMpMvyzWdqRQmbPqVM2cxd9j3RNjMyX7x3_NOmo7NhlJD0YjyZlwG13AIGwHZ9E0IYqX1YyxAO162pXPxZboq4M47CA9Sf2BDdwIPjHsPgOX3ELuFeWR38Su0jsrrJoQ1ti49wllmsM3EbfSM4PXoudbary0NmXrSC2qpkQ0H3SkIbW3cfiwnDPm6s5bWlznjFAwtuDBbWGm7FC2TizgPr_nVRW4hh7E9F_lEkTWS-BIQFsan2huh7z-eK1Q1WEYUC9ReDg87GoKPF0CAz3yfanh_hbfHr7yMVSxqkQznGXmNQ-tj8gfa9PVwKM5BUT_-ofQliUBgEWePQN31cStqRxDuUesGyB"); f.appendChild(captchaDuplicate); var s = document.createElement("input"); s.setAttribute("type","submit"); s.setAttribute("value","Submit"); f.appendChild(masterPid); f.appendChild(pid); f.appendChild(ajaxOption); f.appendChild(responseOption); f.appendChild(quantity); f.appendChild(sessionSelectedStoreID); f.appendChild(s); document.getElementsByTagName("body")[0].appendChild(f); })(); document.getElementById(document.querySelector("[id^='destroyer']").id).submit(); 

を。何が起こったのか、javascriptが2回実行されてトークンが無効になっているようです。次のエラーが表示されます。

Exception in thread Thread-2: 
Traceback (most recent call last): 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 916, in _bootstrap_inner 
    self.run() 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 864, in run 
    self._target(*self._args, **self._kwargs) 
    File "testin.py", line 74, in startbot 
    openseission() 
    File "testin.py", line 183, in openseission 
    driver.execute_script(toinject) 
    File "/Users/____/Desktop/going_headless/chaptcha/flask/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 546, in execute_script 
    'args': converted_args})['value'] 
    File "/Users/____/Desktop/going_headless/chaptcha/flask/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 311, in execute 
    self.error_handler.check_response(response) 
    File "/Users/___/Desktop/going_headless/chaptcha/flask/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 237, in check_response 
    raise exception_class(message, screen, stacktrace) 
selenium.common.exceptions.WebDriverException: Message: unknown error: call function result missing 'value' 
    (Session info: chrome=65.0.3305.0) 
    (Driver info: chromedriver=2.34.522932 (4140ab217e1ca1bec0c4b4d1b148f3761eb3a03e),platform=Mac OS X 10.12.6 x86_64) 

どうすればこの問題を回避できますか?私は過去3時間同じ問題を抱えている人は見つけられませんでした。私はJavaScriptを別の方法で注入しても構いませんが、わかりません。事前にありがとう

+0

エラーが明確な 'call function result 'value' 'がありません。すべての値が提供されている場合は 'JS'をチェックできますか? – DebanjanB

答えて

1

あなたのトレースは、あなたがchrome 65を使用していることを示唆しています(あなたはベータ版チャンネルにいますか?)/ chromedriver 2.34。私はchrome 65がそのバージョンのchromedriverで駆動できるとは思わない。 chromeをダウングレードしたいと思うかもしれません(たとえば、安定版、現在63と思っています)。

関連する問題