做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登录的更多相关文章

  1. 【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 ...

  2. web自动化中的page object模式

    一. 原理 将页面的元素定位和元素行为封装成一个page类,实现页面对象和测试用例分离 类的属性:元素定位 类的行为:元素的操作 测试用例:调用所需页面对象中的行为,组成测试用例 二. 好处 1. 当 ...

  3. web自动化中pytest框架的使用(二)---参数化

    1.pytest--参数化 在测试用例的前面加上@pytest.mark.parametrize("参数名",列表数据) 参数名:用来接收每一项数据,并作为测试用例的参数 列表数据 ...

  4. 基于Selenium的web自动化框架

    转自 : https://www.cnblogs.com/AlwinXu/p/5836709.html 1 什么是selenium Selenium 是一个基于浏览器的自动化工具,它提供了一种跨平台. ...

  5. 【转】基于Selenium的web自动化框架(python)

    1 什么是selenium Selenium 是一个基于浏览器的自动化工具,它提供了一种跨平台.跨浏览器的端到端的web自动化解决方案.Selenium主要包括三部分:Selenium IDE.Sel ...

  6. 【python+selenium的web自动化】- 元素的常用操作详解(一)

    如果想从头学起selenium,可以去看看这个系列的文章哦! https://www.cnblogs.com/miki-peng/category/1942527.html ​ 本篇主要内容:1.元素 ...

  7. Web自动化必会知识:「Web基础、元素定位、元素操作、Selenium运行原理、项目实战+框架」

    1.web 基础-html.dom 对象.js 基本语法 Dom 对象里面涉及元素定位以及对元素的修改.因为对元素操作当中涉及的一些 js 操作,js 基本语法要会用.得要掌握前端的基本用法.为什么要 ...

  8. web自动化页面元素不能键盘输入

    一.背景 web自动化中存在一部分元素属性是readonly属性,导致我们在使用自动化代码的时候无法使用sendkeys()方法传入数据,以12306网站选择出发日期为例,见下图 二.json语句处理 ...

  9. 【Python web自动化】之读取配置文件参数,利用cookie返回值进行跳过验证码进行登录操作

    当进行Python的Web自动化时,会涉及到验证码问题,该如何跳过执行呢,下面请看代码: 1.首先新建配置文件*.ini格式 config.ini [db] #基础地址: baseurl = http ...

  10. RobotFramework自动化测试框架-Selenium Web自动化(二)关于在RobotFramework中如何使用Selenium很全的总结(上)

    好久没有继续分享关于自动化测试相关的东西了,自动化在现今的测试领域已经越来越重要了,大部分公司在测试岗位招聘中都需要会相关的自动化测试知识.而 RobotFramework自动化测试框架 是自动化测试 ...

随机推荐

  1. C# DataTable 虚拟Sql临时表,可以做一些处理

    /// <summary> /// 获取临时表-和数据库表一样的的表结构的才可以 /// </summary> /// <param name="SourceT ...

  2. Spring Security(6)

    您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来- Spring Security使用MySQL保存cookie记录虽然方便,但是目前更多的主流互联网应用都是用NoSQL来保存非业务数据的,Spr ...

  3. ChatGPT杀疯了,这人工智能也太离谱了吧

    转载请注明出处️ 作者:测试蔡坨坨 原文链接:caituotuo.top/2ac8440d.html 你好,我是测试蔡坨坨. 这几天被ChatGPT刷屏,各大网站平台都能看到关于它的文章和视频,上线短 ...

  4. 搭建漏洞环境及实战——搭建SQL注入平台

    Sqli-lab是一款学习SQL注入的开源平台,共有75种不同类型的注入,复制源码然后将其粘贴到网站的目录中,进入MySQL管理中的PHPMyAdmin,打开http://127.0.0.1/phpM ...

  5. java逻辑运算中异或^

    本文主要阐明逻辑运算符^(异或)的作用 a ^ b,相异为真,相同为假. 注意,异或运算,还能交换两个变量. int a = 1; int b = 2; System.out.println(&quo ...

  6. CLISP学习(二)

    它是一门函数式语言,你要用函数的思维来思考. 只不过与数学的表达不同的是,数学里的函数是在括号外  f(x) ,而lisp是在括号内,以列表的形式(f x), cos(x) --> (cos x ...

  7. python进阶之路7 数据类型的内置方法

    内容回顾 while 循环补充说明 1.死循环 2.while循环嵌套和全局标志位 for循环 1.for 变量名 in 待遍历数据 for循环体代码 2.for 也可以与break continue ...

  8. 02-RTL代码分析思路

    RTL代码分析思路(这里不进行具体代码的分析) verilog文件是以.v结尾的 1 RTL代码示例 //Date : 2023-01-09 //E-mail : xxxxxx@163.com //c ...

  9. (16)go-micro微服务jaeger链路追踪

    目录 一 jaeger链路追踪介绍 什么是链路追踪: 链路追踪主要功能: 二 jaeger链路追踪作用 三 jaeger链路追踪主要特性 四 jaeger链路追踪原理图 1.链路调用原理 2. 一次调 ...

  10. MySQL 判断语句 条件函数 case when、if、ifnull

    在MySQL中,需要用到条件判断函数,例如 case when.if.ifnull. 一.方法分类 二.具体方法 (1)if if(expr,result_true,result_false) 注意: ...