PO中 使用序列化cookie方式登录失败,求解

报错信息:


BasePage类:

    def get_cookie(self):
        opt = webdriver.ChromeOptions()
        opt.debugger_address = "127.0.0.1:9222"
        self.driver = webdriver.Chrome(options=opt)
        self.driver.implicitly_wait(3)
        self.driver.get("https://work.weixin.qq.com/wework_admin/frame#index")
        cookie = self.driver.get_cookies()
        with open('cookie_data.yaml', 'w', encoding='utf-8') as f:
            yaml.dump(cookie, f)

    def __cookie_login(self):
        with open('cookie_data.yaml', encoding='utf-8') as f:
            yaml_data = yaml.safe_load(f)
            for cookie in yaml_data:
                self.driver.add_cookie(cookie)
        self.driver.get("https://work.weixin.qq.com/wework_admin/frame#index")

    def __init__(self, base_driver=None):
        # 注解,不是赋值操作,用作IDE的类型提示
        base_driver:WebDriver
        # 防止一个方法中实例化多次driver
        if base_driver is None:
            self.driver = webdriver.Chrome()
            self.driver.get("https://work.weixin.qq.com/wework_admin/loginpage_wx")
            self.__cookie_login()
        else:
            self.driver = base_driver
        self.driver.implicitly_wait(3)

MainPage类继承BasePage:

    def goto_add_member(self):
        """
        跳转到添加成员页面
        :return:
        """
        self.driver.find_element(By.CSS_SELECTOR, '.ww_indexImg_AddMember').click()
        return AddMemberPage(self.driver)

TestAddMember类:

    def setup_class(self):
        # 实例变量可以在类的其他方法使用
        self.main = MainPage()

从错误上看 你safe load了一个空的东西 你看看文件有内容吗

文件内是空的,但是我是想通过get_cookie()方法传入到cookie_data.yaml中

你可以先执行 get操作 把cookie写进去 然后再执行你的的登录操作

  • 按照你写的步骤,应该是先通过一次手动登录操作,调用get_cookie方法将登陆成功后的cookies数据保存到yaml文件中,之后再进行正常的通过读取yaml文件获取cookie数据自动登录执行用例的步骤。
  • 看一下第一步保存的步骤是不是忘了做啦?这个每天都要做一次,因为企业微信那边cookie是24小时过期
1 个赞