我挖了一點,我發現功能在那裏,但它沒有暴露。所以它需要一個方便的猴子扳手來修補它。這個解決方案適用於我,直到這個功能在webdriver調用中完全暴露。
編輯:它似乎service_args現在暴露在外,你不再需要猴子修補程序硒使用代理...請參閱@ alex-czech如何使用的答案。
from selenium import webdriver
from selenium.webdriver.phantomjs.service import Service as PhantomJSService
phantomjs_path = '/usr/lib/node_modules/phantomjs/lib/phantom/bin/phantomjs'
# monkey patch Service temporarily to include desired args
class NewService(PhantomJSService):
def __init__(self, *args, **kwargs):
service_args = kwargs.setdefault('service_args', [])
service_args += [
'--proxy=localhost:8080',
'--proxy-type=http',
]
super(NewService, self).__init__(*args, **kwargs)
webdriver.phantomjs.webdriver.Service = NewService
# init the webdriver
self.driver = webdriver.PhantomJS(phantomjs_path)
# undo monkey patch
webdriver.phantomjs.webdriver.Service = PhantomJSService
以下設置也是有用的,特別是在使用可能需要很長時間加載的代理時。
max_wait = 60
self.driver.set_window_size(1024, 768)
self.driver.set_page_load_timeout(max_wait)
self.driver.set_script_timeout(max_wait)