使用selenium, 有些场景需要在已登陆后再进行操作。而有时候登陆比较麻烦,又要识别图片验证码还要短信验证码。这种时候,再每次运行程序时都开一个新的浏览器,然后进行一遍登陆操作显然是十分傻逼的。
那怎么实现登陆一次,然后可以重复利用同一个浏览器呢?
我们可以参考这篇文章Re-using existing browser session in selenium
废话不多说,我直接把code贴上来。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| from selenium import webdriver
driver = webdriver.Firefox() executor_url = driver.command_executor._url session_id = driver.session_id driver.get("http://tarunlalwani.com")
print session_id print executor_url
def create_driver_session(session_id, executor_url): from selenium.webdriver.remote.webdriver import WebDriver as RemoteWebDriver
org_command_execute = RemoteWebDriver.execute
def new_command_execute(self, command, params=None): if command == "newSession": return {'success': 0, 'value': None, 'sessionId': session_id} else: return org_command_execute(self, command, params)
RemoteWebDriver.execute = new_command_execute
new_driver = webdriver.Remote(command_executor=executor_url, desired_capabilities={}) new_driver.session_id = session_id
RemoteWebDriver.execute = org_command_execute
return new_driver
driver2 = create_driver_session(session_id, executor_url) print driver2.current_url
|