2017-12-27 31 views
0

크롬 셀렌 브라우저에 자바 스크립트 코드를 주입하려고합니다. 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 시간 동안 같은 문제가있는 사람을 찾지 못했습니다. 나는 자바 스크립트를 다른 방법으로 주입하는 것을 꺼리지 만 어떤 것도 모른다. 사전에 감사합니다.

+0

오류 'call function result'value '가 없습니다. 모든 값이 제공되면 'JS'를 확인할 수 있습니까? – DebanjanB

답변

1

귀하의 흔적은 chrome 65 (베타 채널에 있습니까?)/chromedriver 2.34를 사용하고 있음을 나타냅니다. 나는 chrome 65가 chromedriver의 그 버전으로 몰릴 수 있다고 생각하지 않는다. 크롬을 다운 그레이드 할 수 있습니다 (예 : 안정 버전, 현재 63 개).