我挖了一点,发现功能在那里,但没有暴露出来。所以它需要一个方便的活动扳手来修补它。这是适用于我的解决方案,直到此功能在 webdriver 调用中完全公开。
编辑:似乎 service_args 现在暴露了,你不再需要修补 selenium 来使用代理......请参阅@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)