IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Web自动化——frame切换&多窗口切换&窗口截图&验证码处理 -> 正文阅读

[系统运维]Web自动化——frame切换&多窗口切换&窗口截图&验证码处理

1 frame切换

1.1 什么是frame?

frame是HTML页面中的一种框架,主要作用是在当前页面中指定区域显示另一页面元素;frame的两种形式:

# 形式一:
<frameset cols="25%,75%">
    <frame src="页面1">
    <frame src="页面2">
</frameset>
# 形式二:
<iframe name="iframe_a" src="页面" width="250" height="200"></iframe>

1.2 frame切换方法

(1)切换到指定frame:driver.switch_to.frame(frame_reference)
frame_reference:frame框架的name、 id或者定位到的frame元素

(2)恢复默认页面:driver.switch_to.default_content()
在frame中操作其他页面,必须先回到默认页面,才能进一步操作

2 多窗口切换

在HTML页面中,当点击超链接或者按钮时, 有些页面会在新窗口打开;Selenium中封装了获取当前窗口句柄、获取所有窗口句柄和切换到指定句柄窗口的方法;句柄:英文handle,是窗口的唯一识别码。

(1)获取当前窗口句柄:driver.current_window_handle
(2)获取所有窗口句柄:driver.window_handles
(3)切换指定句柄窗口:driver.switch_to.window(handle)

# 使用账号密码登陆牛客网
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep

driver = webdriver.Chrome()
driver.get("https://www.nowcoder.com/")
driver.find_element(By.XPATH,"//a[@id='nav-login']").click()

# 获取所有窗口句柄
handles = driver.window_handles
# 获取当前窗口句柄
handle_now = driver.current_window_handle
# 获取登陆页面的句柄并切换窗口
for handle_login in handles:
     if handle_login!=handle_now:
          driver.switch_to.window(handle_login)
# 切换为账号密码登陆
driver.find_element(By.XPATH,"//li[@class='tab-item']").click()
# 输入账号密码
driver.find_element(By.XPATH,"//div[@class='el-input']//input[@type='text']").send_keys("XXX")
driver.find_element(By.XPATH,"//input[@type='password']").send_keys("XXX")
driver.find_element(By.XPATH,"//button[@type='button']").click()

sleep(3)
driver.quit()

3 窗口截图

执行自动化测试的脚本有时候打印的错误信息不是十分明确,这时候可以通过保存当前窗口的截图直观的找出出错的原因。

截图方法:
driver.get_screenshot_as_file(图片保存路径)
driver.save_screenshot(图片保存路径)

4 验证码处理

验证码是为了防止恶意的请求行为,增加应用安全性而随机生成的图片、数字、字母、算术题等信息。在Web应用中,大部分系统在登陆注册时都要求输入验证码。

4.1 验证码处理方式:

(1)去掉验证码:测试环境下采用,由开发完成
(2)设置万能验证码:生产环境和测试环境采用,由开发完成
(3)验证码识别技术:通过Python-tesseract来识别图片类型验证码,验证码种类多,成功率也不高,不适合使用
(4)记录cookie: 通过记录cookie进行跳过登录

4.2 验证码处理方式:记录cookie

4.2.1 cookie是什么?

(1)Cookie是由Web Server生成的保存在用户浏览器上的小文本文件,可以包含用户相关的信息
(2)Cookie数据格式:键值对
(3)Cookie产生:客户端请求服务器,如果服务器需要记录该用户状态,就给客户端浏览器设置一个Cookie数据
(4)Cookie使用:当浏览器再次请求该网站时, 浏览器把请求的数据和Cookie数据一同提交给服务器,服务器检查该Cookie,以此来辨认用户状态
在这里插入图片描述
cookie一般用于:
(1)记住密码和自动登录
(2)会话跟踪,记录用户登录状态
(3)电商类项目中,记录用户在未登录状态下购物车中的商品

4.2.2 cookie操作

(1)获取指定cookie:driver.get_cookie(cookie名)
(2)获取当前网站所有cookies:driver.get_cookies(),返回一个存放cookie信息的列表,cookie信息存放在字典中
(3)添加cookie:driver.add_cookie(“name”:“值”,“value”:“值”)

# 使用cookie绕过登陆实现步骤:
      # step1:手动登录百度网站
      # step2:手动获取登录后的cookies
      # step3: add_cookie
from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://www.baidu.com/")
driver.add_cookie({"name":"BDUSS","value":"值"})
driver.refresh() # 必须刷新才能看到效果
sleep(5)
driver.quit()
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-12-23 16:04:59  更:2021-12-23 16:06:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 5:24:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码