크롬 셀렌 브라우저에 자바 스크립트 코드를 주입하려고합니다. javascript는 한 번만 유효한 토큰을 포함하므로 javascript는 한 번만 실행될 수 있습니다. 내가 사용한 자바 스크립트를 삽입하려면 :자바 스크립트를 셀레늄 파이썬에 삽입 -> converted_args}) [ 'value']
toinject이 자바 스크립트가 포함되어driver.execute_script(toinject)
: 내가 자바 스크립트 테스터를 사용하여 실행하면 작동하기 때문에이 올바른지 꽤 특정 매우 긴하지만 메신저입니다
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();
을 . 후에 무슨 일이 일어나면 자바 스크립트가 두 번 실행되어 토큰이 유효하지 않은 것처럼 보입니다. 다음 오류가 발생합니다.
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 시간 동안 같은 문제가있는 사람을 찾지 못했습니다. 나는 자바 스크립트를 다른 방법으로 주입하는 것을 꺼리지 만 어떤 것도 모른다. 사전에 감사합니다.
오류 'call function result'value '가 없습니다. 모든 값이 제공되면 'JS'를 확인할 수 있습니까? – DebanjanB