我與硒的工作和Python,我試圖做兩件事情:硒的webdriver:execute_script不能執行自定義方法和外部JavaScript文件
- 導入外部JavaScript文件並執行的方法定義有
- 定義上的字符串方法和評價
此後稱它們爲第一種情況下的輸出:
test.js
function hello(){
document.body.innerHTML = "testing";
}
Python代碼
>>> from selenium import webdriver
>>> f = webdriver.Firefox()
>>> f.execute_script("var s=document.createElement('script');\
... s.src='file://C:/test.js';\
... s.type = 'text/javascript';\
... document.head.appendChild(s)")
>>> f.execute_script("hello")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\selenium-2.41.0-py2.7.egg\selenium\webdriver\remote\webdriver.py", line 394, in execute_script
{'script': script, 'args':converted_args})['value']
File "C:\Python27\lib\site-packages\selenium-2.41.0-py2.7.egg\selenium\webdriver\remote\webdriver.py", line 166, in execute
self.error_handler.check_response(response)
File "C:\Python27\lib\site-packages\selenium-2.41.0-py2.7.egg\selenium\webdriver\remote\errorhandler.py", line 164, in check_response
raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: u'hello is not defined' ; Stacktrace:
at anonymous (about:blank:68)
at handleEvaluateEvent (about:blank:68)
而對於第二種情況:
>>> js = "function blah(){document.body.innerHTML='testing';}"
>>> f.execute_script(js)
>>> f.execute_script("blah")
...
raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: u'blah is not defined' ; Stacktrace:
感謝您的回覆,我知道在第一種情況下的錯誤,但第二種情況下,它沒」 t爲我工作(至少它不會給我更多的錯誤,但沒有任何反應)你能在哪裏工作?如果是這樣,你能分享一下代碼嗎?謝謝! – estemendoza
我編輯了我的答案。 – Louis
謝謝!它的工作原理是,我在沒有「()」的情況下進行調用,就像這個f.execute_script(「blah」) – estemendoza