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的策略,只要人家配置了,非常规操作会被受限,怎么解决?
找运维加白名单。
作者留言
原创不易,如果觉得本文对你有帮助,记得打赏噢O(∩_∩)O,您的支持是我创作路上最大的动力~
web自动化中如何使用cookie登录的更多相关文章
- 【ASP.NET Web API教程】5.5 ASP.NET Web API中的HTTP Cookie
原文:[ASP.NET Web API教程]5.5 ASP.NET Web API中的HTTP Cookie 5.5 HTTP Cookies in ASP.NET Web API 5.5 ASP.N ...
- web自动化中的page object模式
一. 原理 将页面的元素定位和元素行为封装成一个page类,实现页面对象和测试用例分离 类的属性:元素定位 类的行为:元素的操作 测试用例:调用所需页面对象中的行为,组成测试用例 二. 好处 1. 当 ...
- web自动化中pytest框架的使用(二)---参数化
1.pytest--参数化 在测试用例的前面加上@pytest.mark.parametrize("参数名",列表数据) 参数名:用来接收每一项数据,并作为测试用例的参数 列表数据 ...
- 基于Selenium的web自动化框架
转自 : https://www.cnblogs.com/AlwinXu/p/5836709.html 1 什么是selenium Selenium 是一个基于浏览器的自动化工具,它提供了一种跨平台. ...
- 【转】基于Selenium的web自动化框架(python)
1 什么是selenium Selenium 是一个基于浏览器的自动化工具,它提供了一种跨平台.跨浏览器的端到端的web自动化解决方案.Selenium主要包括三部分:Selenium IDE.Sel ...
- 【python+selenium的web自动化】- 元素的常用操作详解(一)
如果想从头学起selenium,可以去看看这个系列的文章哦! https://www.cnblogs.com/miki-peng/category/1942527.html 本篇主要内容:1.元素 ...
- Web自动化必会知识:「Web基础、元素定位、元素操作、Selenium运行原理、项目实战+框架」
1.web 基础-html.dom 对象.js 基本语法 Dom 对象里面涉及元素定位以及对元素的修改.因为对元素操作当中涉及的一些 js 操作,js 基本语法要会用.得要掌握前端的基本用法.为什么要 ...
- web自动化页面元素不能键盘输入
一.背景 web自动化中存在一部分元素属性是readonly属性,导致我们在使用自动化代码的时候无法使用sendkeys()方法传入数据,以12306网站选择出发日期为例,见下图 二.json语句处理 ...
- 【Python web自动化】之读取配置文件参数,利用cookie返回值进行跳过验证码进行登录操作
当进行Python的Web自动化时,会涉及到验证码问题,该如何跳过执行呢,下面请看代码: 1.首先新建配置文件*.ini格式 config.ini [db] #基础地址: baseurl = http ...
- RobotFramework自动化测试框架-Selenium Web自动化(二)关于在RobotFramework中如何使用Selenium很全的总结(上)
好久没有继续分享关于自动化测试相关的东西了,自动化在现今的测试领域已经越来越重要了,大部分公司在测试岗位招聘中都需要会相关的自动化测试知识.而 RobotFramework自动化测试框架 是自动化测试 ...
随机推荐
- RabbitMq了解
RibbitMQ MQ优势 MQ的三大主要作用: 应用解耦.异步提速.流量削锋 应用解耦 系统的耦合性越高,容错性就越低,可维护性就越低: 解耦: 如果其中一个系统服务宕机,那么系统的其他服务将也无法 ...
- QMetaObject::connectSlotsByName: No matching signal for xxx
问题描述 这个问题是没有与 xxx 这个槽函数匹配的信号,但是我做了 QMetaObject::connectSlotsByName(this);, 自动连接.并且确保了函数名和信号名是没有错误的,还 ...
- 一文带你快速入门 Go 语言微服务开发 - Dubbo Go 入门实践总结
更多详细示例可直接访问 Dubbo 官网 或搜索关注官方微信公众号:Apache Dubbo 1. 安装Go语言环境 建议使用最新版 go 1.17 go version >= go 1.15 ...
- .net6&7中如何优雅且高性能的使用Json序列化
.net中的SourceGenerator让开发者编可以写分析器,在项目代码编译时,分析器分析项目既有的静态代码,允许添加源代码到GeneratorExecutionContext中,一同与既有的代码 ...
- Kafka教程(二)API开发-生产者、消费者、topic
一.地址 1.实时更新的思维导图 https://www.mubucm.com/doc/4uqlpedefuj 2.图片 二.具体内容 5.producer生产者 demo 发送pro.s ...
- Linux常用软件的安装及Nginx的使用
主要内容: 软件安装方式 上传与下载工具 常用软件的安装--jdk.tomcat.mysql.redis 项目的部署 Nginx的安装 Nginx的功能 静态网站部署 虚拟主机配置及端口绑定 域名绑定 ...
- JavaEE Day07 HTML
今日内容 Web概念概述 HTML 一.Web概念概述 1. JavaWeb:使用Java语言开发的基于互联网的项目 2.软件架构 C/S架构:Client/Server--- 客户端/服务器端(安卓 ...
- 浏览器DevTools使用技巧
我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 本文作者:正则 作为一名前端开发人员,平时开发中使用最多的就是 Ch ...
- day35-JSON&Ajax03
JSON&Ajax03 4.jQuery的Ajax请求 原生Ajax请求问题分析: 编写原生的Ajax要写很多的代码,还要考虑浏览器兼容问题,使用不方便 在实际工作中,一般使用JavaScri ...
- element-ui中table表格表头和表格内容都水平居中,以及斑马纹背景颜色修改
<el-table :data="detalData" stripe //斑马纹 border :header-cell-style="{textAlign: 'c ...