zoukankan      html  css  js  c++  java
  • selenium只打开一个浏览器窗口

    from selenium.webdriver import Remote
    from selenium.webdriver.chrome import options
    from selenium.common.exceptions import InvalidArgumentException
    
    class ReuseChrome(Remote):
    
        def __init__(self, command_executor, session_id):
            self.r_session_id = session_id
            Remote.__init__(self, command_executor=command_executor, desired_capabilities={})
    
        def start_session(self, capabilities, browser_profile=None):
            """
            重写start_session方法
            """
            if not isinstance(capabilities, dict):
                raise InvalidArgumentException("Capabilities must be a dictionary")
            if browser_profile:
                if "moz:firefoxOptions" in capabilities:
                    capabilities["moz:firefoxOptions"]["profile"] = browser_profile.encoded
                else:
                    capabilities.update({'firefox_profile': browser_profile.encoded})
    
            self.capabilities = options.Options().to_capabilities()
            self.session_id = self.r_session_id
            self.w3c = False
    
    from selenium import webdriver
    
    driver = webdriver.Chrome()
    
    # 记录 executor_url 和 session_id 以便复用session
    executor_url = driver.command_executor._url
    session_id = driver.session_id
    # 访问百度
    driver.get("https://www.baidu.com")
    
    print(session_id)
    print(executor_url)
    
    # 假如driver对象不存在,但浏览器未关闭
    del driver
    
    # 使用ReuseChrome()复用上次的session
    driver2 = ReuseChrome(command_executor=executor_url, session_id=session_id)
    
    # 打印current_url为百度的地址,说明复用成功
    print(driver2.current_url)
    driver2.get("https://www.baidu.com")
    
  • 相关阅读:
    Http服务器实现文件上传与下载(二)
    Http服务器实现文件上传与下载(三)
    NHibernate VS IbatisNet
    5. Element-UI的基本使用
    4. Vue脚手架
    3. Vue单文件组件
    webpack中的加载器
    webpack
    02.模块化相关规范
    01.前端工程化的学习目标
  • 原文地址:https://www.cnblogs.com/c-x-a/p/9293636.html
Copyright © 2011-2022 走看看