做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. 【课程复习】Java Web、框架及项目简单回顾

    JavaEE Day14 Servlet&HTTP&Request&BeanUtils介绍 Servlet类体系结构,两个子抽象类,需要继承HttpServlet而不是Gene ...

  2. 基于ZR.VUE 前端的改造,页面刷新报错

    问题描述: 前后端分离开发,分开部署. 页面刷新 直接报404 错误的解决办法 提示:  先在 .env.development 中 配置 VUE_APP_BASE_API , 将 '/' 替换为 后 ...

  3. 2022年7月13日,第四组,周鹏,JS做计算器代码

    代码不难,看了我前面笔记的应该能看懂. 没看?(= ̄ω ̄=)喵了个咪(๑‾᷅^‾᷅๑) 嫌弃你 还看啥,去看啊!要不直接复制代码吧!( ̄へ ̄)( ̄へ ̄)( ̄へ ̄) Document 0 / * - 7 ...

  4. Python二维码扫描

    原文链接:https://blog.easyctf.cn/Moxin/59365.html 模块准备 1.pyzbar pip install pyzbar 2.PIL 注意:PIL只支持Python ...

  5. [seaborn] seaborn学习笔记10-绘图实例(2) Drawing example(2)

    文章目录 10 绘图实例(2) Drawing example(2) 1. Grouped violinplots with split violins(violinplot) 2. Annotate ...

  6. Spark通信框架RPC介绍

    Spark通信框架RPC介绍 内容安排: 1.RPC原理 2.nio操作 3.netty简单的api 4.自定义RPC框架 RPC原理学习 什么是RPC RPC(Remote Procedure Ca ...

  7. [Leetcode]完全平方数

    题目 代码 class Solution { public: int numSquares(int n) { vector<int> dp(n + 1, INT_MAX); dp[0] = ...

  8. [数据结构]Hash Table(哈希表)

    Hash Table基本概念 散列函数:一个把查找表中的关键字映射成该关键字对应的地址的函数,记为Hash(key)=Addr. 散列函数可能会把两个或者两个以上的关键字映射到同一个地址,称这种情况为 ...

  9. 代码小DEMO随笔---不经过后端接口,JS上传文件读取文件,展示到页面提供下载功能

    如果文件不大的话,我们可以不经过后端的接口,直接进行文件保存与展示下载~~ 目前,IE8.Firfox.Chrome.Opera浏览器都支持这种小文件嵌入. 好处:节省了一个HTTP 请求. 坏处:就 ...

  10. webpack配置less以及js中引入的图片问题

    1.问题重现 当我做了这个配置以后,发现less里的图片可以正常展现到页面,但是js里的图片以及其他文件都不能正常展现,都报404 原始配置如下: // 如果有額外的.babelrc配置的話就可以使用 ...