web自动化中如何使用cookie登录
做web自动化的时候,登录是关键的一步。但每次频繁的输入用户名、密码导致心态有些爆炸,所以使用cookie登录势在必行。下面是两种场景的cookie登录。
一. cookie登录1
这种是界面地址跳转的情况,是大多数登录场景。
test_login_sg.py
from common.config import COOKIE_PATH from po.demo import Sg import time from common.utils import get_driver def account_login(): """ 账号密码登录 """ driver = get_driver() page = Sg(driver) page.get(page.url) page.phone.send_keys('***') page.password.send_keys('***') page.sure.click() page.shop_name.click() cookies = page.get_cookies() with open(COOKIE_PATH, 'w+') as f: f.write(str(cookies)) return driver def cookie_login(): """ cookie登录 """ driver = get_driver() page = Sg(driver) page.get(page.url) with open(COOKIE_PATH, "r") as f: cookie_li = eval(f.read()) page.add_cookies(cookie_li) page.get(page.shop_url) time.sleep(30) if __name__ == '__main__': # account_login() cookie_login()
sg_page.py
from poium import Page, Element class Sg(Page): url = "https://passporttest.senguo.me/#/mobileLogin" shop_url = "https://cashiertest.senguo.me/m/#/boss/homeCenter/home?shopId=451" phone = Element(xpath='//input[@placeholder="请输入手机号"]') password = Element(xpath="//input[@placeholder='请输入密码']") sure = Element(xpath="//div[text()='确认']") shop_name = Element(xpath="//span[text()='砬之眼']")
二. cookie登录2
这种情况是url不跳转的情况,常见于登录某网站。
test_login_veer.py
def login_veer(): """ 账号密码登录veer """ page = VeerLoginPage(driver) page.get(page.url) page.login_entrance.click() page.phone.send_keys('***') page.password.send_keys('***') page.login.click() page.picture.click() cookies = page.get_cookies() with open(COOKIE_PATH, 'w+') as f: f.write(str(cookies)) return driver def login_veer_in_cookie(): """ 使用cookie登录 """ page = VeerLoginPage(driver) page.get(page.url) with open(COOKIE_PATH, "r") as f: cookie_li = eval(f.read()) page.add_cookies(cookie_li) page.get(page.url) driver.refresh() time.sleep(40) return driver
veer_page.py
class VeerLoginPage(BasePage): login_entrance = Element(partial_link_text="登录") phone = Element(xpath="//input[@placeholder='请输入您的手机号/邮箱']") password = Element(xpath="//input[@placeholder='请输入密码']") login = Element(xpath="//button[text()='登 录']") person = Element(xpath="//div[@class='wide_header right_off_canvas_toggle_menu']") log_out = Element(xpath="//a[text()='退出登录']") success_flag = Element(xpath="//figure[@class='account']") # 登录完首页成功标识 picture = Element(xpath="//nav/a[text()='照片']")
三. 后记
新功能调整后使用cookie登录不上?
问题在于cookie,为什么cookie有问题呢?最近新功能有上线,前后端代码有调整,导致获取不到cookie依赖的关键信息,但是开发对于这些并不自知,怎么解决?
去子级页面获取cookie。
没有新功能,以前好好的,现在登录不上?
服务器如阿里有反爬策略,服务区端有很多针对selenium的策略,只要人家配置了,非常规操作会被受限,怎么解决?
找运维加白名单。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架