全网最详细,web自动化测试窗口框架与验证码登录处理(超详细实战)

这篇具有很好参考价值的文章主要介绍了全网最详细,web自动化测试窗口框架与验证码登录处理(超详细实战)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

selenium的作用域切换
selenium在处理元素时遇见新窗口、网页嵌套网页、网页的原生弹窗,无法进行直接处理作用域里元素的内容,需要通过切换作用域来处理此类问题。

Selenium4自动化测试:https://www.bilibili.com/video/BV1MS4y1W79K/

selenium三种作用域切换:
①、window窗口切换
②、iframe切换
③、alert弹窗切换

window窗口切换

以百度为例,在原百度的网页上,点击超链接后会打开一个新的网页,这个时候如果需要定位新的网页上的元素,就需要切换作用域了。

切换作用域实现方案:

使用driver.window_handles,可以获取全部网页的索引,并且将索引存放于一个数组中,因此可以通过数组取值的方式实现切换网页作用域:

driver.switch_to.window(driver.window_handles[-1])

切换作用域后,原网页上就无法进行元素定位了,可以通过数组下标取值的方式,将作用域切换为原网页:

driver.switch_to.window(driver.window_handles[0])

代码实现:

from selenium import webdriver

#打开浏览器
driver = webdriver.Chrome("chromedriver.exe")
driver.maximize_window()
#打开网页
driver.get("https://www.baidu.com/")


driver.find_element_by_link_text("hao123").click()      #会跳转一个新的hao123的窗口,此时就无法操作原百度网页的窗口了,因此需要切换作用域
#获取所有网页的索引:driver.window_handles
# print(driver.window_handles)    #打印出来的值是一个数组:['37554D9C36A0A691571C87C250434881', '860CA08A7CEEB72959449FCB3B75D146'],因此可以通过数组取值的方式实现切换网页作用域
driver.switch_to.window(driver.window_handles[-1])   #把driver切换到最新弹出来的窗口
print(driver.title)    #获取当前网页的标题
driver.find_element_by_xpath('//*[@id="search"]/form/div[2]/input').send_keys("csdn")

iframe切换

在某些后台管理系统中,网页中嵌套小网页,这种情况是没有办法直接处理小网页的,大网页的内容是可以直接处理的

识别小网页
怎么查看哪些页面是嵌套小网页的:iframe通常在大网页中是以iframe标签存在的,标签里面也会有html的标签。我们可以通过源代码或者右键空白区域去判断是否存在【重新加载框架选项】:

①源代码查看标签判断:定位元素后,去代码前后找是否有iframe标签,且里面还有html标签

②右键空白区域查看是否存在【重新加载框架选项】判断:

切换作用域
先找到iframe标签的id值,然后定位元素,再使用driver.switch_to.frame()方法切换。相同的道理,切换作用域后,原网页就无法进行元素的定位,可将作用域切换回原网页:driver.switch_to.default_content()

代码实现:

from selenium import webdriver

driver = webdriver.Chrome("chromedriver.exe")
driver.maximize_window()
driver.get("https://passport2.eastmoney.com/pub/login")

#作用域从大网页切换到小网页(不同版本的selenium有以下两种写法)
driver.switch_to.frame(driver.find_element_by_id('frame_login') )     #frame_login为frame标签的id值
driver.switch_to.frame("frame_login")
#输入框的xpath://*[@id="txt_mobile"]
driver.find_element_by_xpath('//*[@id="txt_mobile"]').send_keys("110")

#把作用域从小网页切换到大网页(不同版本的selenium有以下两种写法)
driver.switch_to.default_content()
driver.switch_to.parent_frame()      

#/html/body/div[1]/div/div/h1
e = driver.find_element_by_xpath('/html/body/div[1]/div/div/h1')
print(e.text)     #能成功打印,说明小网页切换大网页成功了

alert弹窗切换

alert窗口就是js提示框,它是浏览器原声的弹窗,不属于web界面,所以,在有这个提示框的作用下,我们是无法继续web操作的,必须先处理掉js弹窗,才可以继续。

Alert类提供了四个方法来处理弹窗:

driver.switch_to.alert.accept()     # 确定操作
driver.switch_to.alert.dismiss()     # 取消操作
driver.switch_to.alert.send_keys("")     # alert弹框输入文本
driver.switch_to.alert.text()        # 获取alert的文本内容

代码实现:

from selenium import webdriver
import time
#打开浏览器,获得浏览器句柄
driver = webdriver.Chrome("chromedriver.exe")
driver.maximize_window()
driver.get("http://localhost:8080/selenium/selenium6.html")

#xpath:/html/body/a
driver.find_element_by_xpath('/html/body/a').click()

time.sleep(10)   #等待10s查看弹窗关闭效果

driver.switch_to.alert.accept()     # 确定操作
driver.switch_to.alert.dismiss()     # 取消操作
driver.switch_to.alert.send_keys("")     # alert弹框输入文本
driver.switch_to.alert.text()        # 获取alert的文本内容

登录验证

在做自动化测试时,有些图形化的验证码很复杂,验证码的作用是为了防止自动化工具,可以有以下几种方式去处理它:

万能码
深度学习
使用cookie绕过登录

服务器验证用户身份的方式有两种:第一种是使用cookie和session的方式;第二种是使用token的方式。

第一种验证方式下,我们可以使用已经登录账号的cookie,来伪造账号已经登录了

cookie理解

比如用户登录了某个网站后,再次刷新这个页面去请求服务器,如果没有相关机制的话,服务器是不知道这个请求是否还是刷新之前登录的用户发出来的。此时,为了维持用户的登录状态,即为了使服务器能够识别页面刷新之后的请求,就可以使用cookie机制。

用户A第一次请求服务器后,服务器会自动生成一个暗号,并将这个暗号的一部分返回给用户A,用户A将其以cookie的方式存起来,下次再次访问的时候,会自动把cookie带上,服务器拿到cookie后将其与自己的进行比对,识别出是用户A(以此类推,不同的用户有不同的暗号),服务器通过这种方式以此来识别各个用户。

为什么要这样做:请求时用的是http协议,http协议有一个特点就是:无状态,即服务器在每次请求时,他不知道谁是谁,为了解决这个问题,就诞生了cookie和session机制。在服务器上以session的形式存在,用户端以cookie的形式存在。

例如用户A已经登录,在服务器上对应的session就会是登录状态,用户A再次请求,服务器就不会让用户A再进行以此登录操作了。所以,cookie绕过登录其实是登录状态保持,而不是真的不需要登录

cookie只是一个暗号,所有的登录记录都是存在session里

使用cookie绕过登录的实现
①第一步:获取已经登录的cookie

from selenium import webdriver
import time

driver = webdriver.Chrome("chromedriver.exe")
driver.maximize_window()
driver.get("https://www.bilibili.com/")


#第一步:获取已经登录的cookie(手工抓取)
time.sleep(60)   #等待的时间用于手动登录
print(driver.get_cookies())

②第二步:手动添加已经登录的cookie(在添加之前需要将原有的cookie删掉)

由于Selenium每次启动的浏览器是一个隔离的环境,不能直接使用本地已经保存的Cookies值,我们需要通过driver的add_cookie()方法手动添加Cookies

#第二步:手动添加已经登录的cookie(在添加之前需要将原有的cookie删掉)
driver.delete_all_cookies()
#下面是刚才获取的cookie,是以数组形式存在的,可遍历添加cookie
cookies = [{"xxxxx"}]

for cookie in cookies:
    driver.add_cookie(cookie)

③、第三步:刷新网页

#刷新网页
driver.refresh() 
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

全网最详细,web自动化测试窗口框架与验证码登录处理(超详细实战),自动化测试,软件测试工程师,web自动化测试,软件测试,自动化测试,web自动化测试,python自动化测试,selenium

二、接口自动化项目实战

全网最详细,web自动化测试窗口框架与验证码登录处理(超详细实战),自动化测试,软件测试工程师,web自动化测试,软件测试,自动化测试,web自动化测试,python自动化测试,selenium

三、Web自动化项目实战

全网最详细,web自动化测试窗口框架与验证码登录处理(超详细实战),自动化测试,软件测试工程师,web自动化测试,软件测试,自动化测试,web自动化测试,python自动化测试,selenium

四、App自动化项目实战

全网最详细,web自动化测试窗口框架与验证码登录处理(超详细实战),自动化测试,软件测试工程师,web自动化测试,软件测试,自动化测试,web自动化测试,python自动化测试,selenium

五、一线大厂简历

全网最详细,web自动化测试窗口框架与验证码登录处理(超详细实战),自动化测试,软件测试工程师,web自动化测试,软件测试,自动化测试,web自动化测试,python自动化测试,selenium

六、测试开发DevOps体系

全网最详细,web自动化测试窗口框架与验证码登录处理(超详细实战),自动化测试,软件测试工程师,web自动化测试,软件测试,自动化测试,web自动化测试,python自动化测试,selenium

七、常用自动化测试工具

全网最详细,web自动化测试窗口框架与验证码登录处理(超详细实战),自动化测试,软件测试工程师,web自动化测试,软件测试,自动化测试,web自动化测试,python自动化测试,selenium

八、JMeter性能测试

全网最详细,web自动化测试窗口框架与验证码登录处理(超详细实战),自动化测试,软件测试工程师,web自动化测试,软件测试,自动化测试,web自动化测试,python自动化测试,selenium

九、总结(尾部小惊喜)

只有不断拼搏,才能摆脱平庸。只有奋斗不息,才能迎来辉煌。愿你不畏艰难,不惧逆境,不停前行,圆梦无限!

不放弃,不言败,奋斗的人生最精彩!每一次跌倒都是成长的历练,每一次坚持都是追逐梦想的勇气。鼓起勇气,向着未来奋力前行!

天行健,君子自强不息。拼搏奋斗,是我们生命中最重要的一部分。愿每一个坚定向前的人都能勇往直前,创造属于自己的辉煌!文章来源地址https://www.toymoban.com/news/detail-729713.html

到了这里,关于全网最详细,web自动化测试窗口框架与验证码登录处理(超详细实战)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【Web UI自动化测试】Web UI自动化测试之日志收集篇(全网最全)

    【Web UI自动化测试】Web UI自动化测试之日志收集篇(全网最全)

    本文大纲截图:   日志: 用于记录系统运行时的信息,对一个事件的记录,也称为 Log 。 日志作用: 1)调试程序 2)了解系统程序运行的情况是否正常 3)系统程序运行故障分析与问题定位 4)用来做用户行为分析和数据统计 日志级别: 日志级别:指日志信息的优先级、重

    2024年02月12日
    浏览(14)
  • Web自动化测试(一)(全网最给力自动化教程)

    Web自动化测试(一)(全网最给力自动化教程)

    2.1 操作元素基本方法 2.2 常用8种元素定位(Firebug和firepath) 2.3 xpath定位 正文 前言 前面已经把环境搭建好了,从这篇开始,正式学习selenium的webdriver框架。我们平常说的 selenium自动化,其实它并不是类似于QTP之类的有GUI界面的可视化工具,我们要学的是webdriver框架的API。 本

    2024年02月02日
    浏览(9)
  • 火爆全网,Python自动化测试-openpyxl操作测试(详细)

    当做自动化测试时,测试用例逐渐变多情况下,如果所有测试用例都通过代码管理将会使得代码十分臃肿,而且维护成本会很高; 所以我们一般会通过Excel去管理所有的测试用例,而openpyxl库提供了访问Excel的方法 openpyxl的介绍 一个Python库,用于读取/写入Excel 2010 xlsx 、xlsm 、

    2024年02月11日
    浏览(9)
  • 全网最详细的自动化测试(Jenkins 篇)

    全网最详细的自动化测试(Jenkins 篇)

    Robot Framework 概念 Robot Framework 安装 Pycharm + Robot Framework 环境搭建 Robot Framework 介绍 Jenkins 自动化测试 Robot Framework是一个基于Python的,可扩展的驱动的自动化测试框架。 它有几个主要特点:  使用简单易用的表格式语法创建测试用例; 提供从现有扩展到更高级别

    2024年02月09日
    浏览(27)
  • Jenkins+Python自动化测试持续集成详细教程(全网独家)

    Jenkins+Python自动化测试持续集成详细教程(全网独家)

    目录 一、前言 二、环境准备 三、创建Jenkins Job 四、编写Python自动化测试脚本 五、测试报告生成与展示 六、持续集成流程优化 七、实战演练 八、常见问题及解决方案 九、结论 Jenkins是目前最为流行的CI/CD工具之一,它可以支持多种语言和技术栈,如Java、Python、JavaScript等。

    2024年02月06日
    浏览(15)
  • UI自动化概念+Web自动化测试框架

    UI自动化概念+Web自动化测试框架

    1.UI自动化测试概念:我们先明确什么是UI UI,即(User Interface简称UI用户界面)是系统和用户之间进行交互和信息交换的媒介 UI自动化测试: Web自动化测试和移动自动化测试都属于UI自动化测试,UI自动化测试就是借助自动化工具对程序UI层进行自动化的测试 2.为什么对UI采用自动化

    2024年02月06日
    浏览(45)
  • 如何搭建关键字驱动自动化测试框架?这绝对是全网天花板的教程

    如何搭建关键字驱动自动化测试框架?这绝对是全网天花板的教程

    目录 1. 驱动自动化测试介绍 2. 搭建驱动自动化测试框架 步骤1:选择测试工具 步骤2:定义测试用例 步骤3:编写测试驱动引擎 步骤4:实现测试库 步骤5:执行测试 3. 实现驱动自动化测试的关键技术 技术1:测试工具 技术2:测试驱动引擎的编写 技

    2023年04月20日
    浏览(17)
  • Ui自动化概念+Web自动化测试框架介绍

    Ui自动化概念+Web自动化测试框架介绍

    目录 UI 1.UI自动化测试概念:我们先明确什么是UI 2.为什么对UI采用自动化测试? 3.什么项目适合做UI自动化测试? 4.UI自动化测试介入时机 5.UI自动化测试所属分类 Web自动化测试框架介绍 2.Selenium框架介绍及特点: Web自动化测试环境搭建 2.元素定位(一) idclassname,tagname定位 link text与

    2023年04月21日
    浏览(16)
  • UI自动化概念 + Web自动化测试框架介绍

    UI,即(User Interface简称UI用户界面)是系统和用户之间进行交互和信息交换的媒介 UI自动化测试: Web自动化测试和移动自动化测试都属于UI自动化测试,UI自动化测试就是借助自动化工具对程序UI层进行自动化的测试 从不同的阶段或层次来说,自动化测试可以分为单元测试、接口

    2024年02月08日
    浏览(15)
  • Selenium+Pytest自动化测试框架实战,还不会点这里一清二楚,全网最细教程!

    Selenium+Pytest自动化测试框架实战,还不会点这里一清二楚,全网最细教程!

    在华为工作了10年的大佬出的Web自动化测试教程,华为现用技术教程!_哔哩哔哩_bilibili 在华为工作了10年的大佬出的Web自动化测试教程,华为现用技术教程!共计16条视频,包括:1. 【web自动化】主流Web自动化测试技术对比、2. 【web自动化】Selenium自动化测试环境一键搭建、

    2024年02月02日
    浏览(16)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包