尝试处理webdriver超时的创建(偶尔发生一次here)。我无法使用基于信号的超时,因为我的服务器在Windows上运行,所以我一直在尝试寻找替代方案。
我查看了来自eventlet的超时,但我认为不会削减它。 time.sleep(10000)不会触发超时,所以我认为超时本身不会。
我在想的是调用一个线程来创建并返回浏览器,然后设置一个连接超时。如下所示:
def SpawnPhantomJS(dcap, service_args):
browser = webdriver.PhantomJS('C:\phantomjs.exe',desired_capabilities=dcap, service_args=service_args)
print "browser made!"
return browser
proxywrite = '--proxy=',nextproxy
service_args = [
proxywrite,
'--proxy-type=http',
'--ignore-ssl-errors=true',
]
dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = (nextuseragent)
newDriver = Thread(target=SpawnPhantomJS, args=[dcap, service_args]).start().join(20)
所以我在理论上如何正确地执行此操作的语法存在一些问题。如果创建停止,SpawnPhamtomJS线程将停止而不是主线程,因此超时连接应该有助于它继续前进。
这可能吗?我可以在线程中创建一个webdriver并将其返回吗?任何一点赞赏。
更新
只是调用一个函数返回一个webcontrol,这样就可以预示我正在做的事情。
newDriver = SpawnPhantomJS(dcap, service_args)
所以我希望这只是一个语法问题,我把它作为一个超时的线程来运行。
然而,这并没有这样做:
spawnthread = Thread(target=SpawnPhantomJS, args=[dcap, service_args])
spawnthread.start()
newDriver = spawnthread.join()
那里一厢情愿。
答案 0 :(得分:0)
线程池。
rstackdeque