使用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
   |