PO模式 复用已有的浏览器 使用cookies免登

PO设计模式

历史:
2013提出 作者:Martin Flower https://www.martifowler.com/bliki/PageObject.html

复用已有的浏览器(免登)

这里的复用指的是把已经打开的(使用的)浏览器继续使用。
首先在终端启动浏览器进程:chrome --remote-debugging-port=9000 关闭所有浏览器执行
注意⚠️ :1.注意要配置好环境变量,没有添加的,切换到对应驱动下执行 2.chrome是驱动的名字,每个人的有可能不同。
这个时候就可以省略这个登陆的步骤(运行上面的驱动后,做了登陆操作),然后代码继续运行这个打开的浏览器,在已经存在的状态继续运行。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from time import sleep

class TestMian():
    def test_01(self):
        options = Options()
        options.debugger_address = '127.0.0.1:9000'  # 注意启动的端口要和这里的端口一致
        self.driver = webdriver.Chrome(options=options)
        # self.driver.get('https://oa.dingtalk.com/index.htm#/welcome')
        self.driver.find_element(By.XPATH,'//*[@text()="增值服务"]').click()
        sleep(3)

使用cookie免登
首先使用上面的方式获取cookie,然后将cookie存储起来,添加进来,使用cookie。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from time import sleep

class TestMian():
    def test_01(self):
        options = Options()
        options.debugger_address = '127.0.0.1:9000'  # 注意启动的端口要和这里的端口一致
        self.driver = webdriver.Chrome(options=options)
      # cookies = self.driver.get_cookies()  # 获取cookie,然后提取出来存放  两次执行,这是第一次执行的。然后把cookie复制出来放到下面(这里get_cookies()方法获取的是整个页面的cookie,每个请求都有可能会有一个cookie,所以获取到的是多个cookie,也就是多个字典。)
        cookies = {{"..."},{",,,,"}}   # 注意cookie中不可以有小数,可以在下面的添加中做判断处理注意expiry(过期时间)
        self.driver.get('https://oa.dingtalk.com/index.htm#/welcome')
        for cookie in cookies:
        	if “expiry” in cookie.keys():
        		cookie.pop(“expiry”)
            self.driver.add_cookies(cookie)
        self.driver.get('https://oa.dingtalk.com/index.htm#/welcome')
        self.driver.find_element(By.XPATH,'//*[@text()="增值服务"]').click()
        sleep(3)

使用shelve存储cookies

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from time import sleep
import shelve

class TestMian():
    def test_01(self):
        options = Options()
        options.debugger_address = '127.0.0.1:9099'  # 注意启动的端口要和这里的端口一致
        self.driver = webdriver.Chrome(options=options)
        # cookies = self.driver.get_cookie()  # 获取cookie,然后提取出来存放  两次执行,这是第一次执行的。然后把cookie复制出来放到下面
        # cookies = {{"..."},{",,,,"}}
        self.driver.get('https://oa.dingtalk.com/index.htm#/welcome')
        db = shelve.open('cookies')  # shelve类似一个小的数据库,用于存放获取到的cookie
        # db['cookie'] = self.driver.get_cookies()
        cookies = db['cookie']  
        for cookie in cookies:
            self.driver.add_cookie(cookie)
        self.driver.get('https://oa.dingtalk.com/index.htm#/welcome')
        self.driver.find_element(By.XPATH,'//*[@text()="增值服务"]').click()
        sleep(3)

注意⚠️ :
第一步都是先获取cookie —— get_cookie()
第二步才使用cookie,使用cookie的时候,不用再使用复用已有的浏览器了,所以options=options要去掉。 —— add_cookie(cookie)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值