首页 > 其他分享 >Selenium3自动化测试实战--第4章 WebDriver API 3--定位一组元素,多表单切换,多窗口切换,警告框处理

Selenium3自动化测试实战--第4章 WebDriver API 3--定位一组元素,多表单切换,多窗口切换,警告框处理

时间:2022-12-11 13:22:05浏览次数:47  
标签:-- 多窗口 driver switch alert window 切换 iframe

4.8 定位一组元素

书中是elements = find_elements_by_id()

官网是elements = find_elements(By.ID,'')

然后for循环  for e in elements:

4.9 多表单切换

web应用中经常会用到frame、iframe表单嵌套页面的应用。首先,按官网介绍:框架是一种现在被弃用的方法,用于从同一域中的多个文档构建站点布局。除非使用的是HTML5之前的webapp,否则你不太可能与他们合作。内嵌框架允许插入来自不同领域的文档,并且仍然经常使用。所以,我们直接学习官网的方法,也许书中介绍的早已经过时了。

WebDriver提供了三种切换到帧的方法。

使用WebElement

# 存储网页元素
iframe = driver.find_element(By.CSS_SELECTOR, "#modal>iframe")
# 切换到选择的iframe
driver.switch_to.frame(iframe)
# 单击按钮
driver.find_element(By.TAG_NAME,'button').click()

使用name或id

如果frame或iframe具有id或name属性,则可以使用该属性。如果名称或id在页面上不是唯一的,那么将切换到找到的第一个。

# 通过id切换框架
driver.switch_to.frame('buttonframe')
# 单击按钮
driver.find_element(By.TAG_NAME,'button').click()

使用索引

使用frame的索引,例如可以使用JavaScript中的windows.frames进行查询

# 基于索引切换到第2个iframe
iframe = driver.find_elements(By.TAG_NAME,'iframe')[1]
# 切换到选择的iframe
driver.switch_to.frame(iframe)

离开框架

driver.switch_to.default_content()

上面三种方法,都是使用了,1先找出iframe,2然后使用switch_to.frame()切换到该iframe,3使用switch_to.default_content()再离开,回到原来的外层的页面。

而书中,也是介绍的这些。

4.10 多窗口切换

switch_to.window()

current_window_handle

window_handles

# 获取当前页面的窗口句柄
search_window = driver.current_window_handle
# 获得当前所有打开的窗口句柄
all_handles = driver.windows_handles
# 进入注册窗口,通过遍历循环all_handles
for handle in all_handles:
    if handle !=search_window:
        driver.switch_to.window(handle)
        
# 回到搜索窗口
driver.switch_to.window(search_window)

webdriver没有区分窗口和标签页。而且官网提到,Selenium 4提供了一个新的api New Window它创建一个新选项卡或新窗口并自动切换到它。

# 打开新标签页,并切换到新标签页
driver.switch_to.new_window('tab')

# 打开一个新窗口,并切换到新窗口
driver.switch_to.new_window('window')

这里也没有明说参数tab和window是什么,如果是点击一个链接打开一个新窗口该怎么使用。

后来经过试验,参数tab,或window仅代表新创建一个新选项卡,还是一个新窗口。而点击链接打开的,仍需要通过传递handle进行切换。

4.11 警告框处理

首先使用switch_to.alert进行切换  # alert后面没有()

其实,使用相应函数进行操作

text:返回alert, confirm, prompt中的文字信息

  这三者的区别, alert警告框,是只有确定按钮

        confirm,有确定和取消按钮

        prompt,提示框可以文本输入,以及确定和取消

accept():接受现有警告框

dismiss():解散现有警告框

send_keys():在警告框中输入文本

# 获取警告窗
alert = driver.switch_to.alert

# 获取警告窗提示信息
alert_text = alert.text

# 确定警告框  接受警告框
alert.accept()

 

标签:--,多窗口,driver,switch,alert,window,切换,iframe
From: https://www.cnblogs.com/guohui2022/p/16907298.html

相关文章

  • RNA-seq 详细教程:详解DESeq2流程(9)
    学习目标了解DESeq2涉及的不同步骤了解变异的来源并检查sizefactors检查基因水平的离散估计了解差异表达分析过程中离散的重要性DESeq2流程前面,我们使用设计公......
  • RNA-seq 详细教程:假设检验和多重检验(8)
    学习目标了解模型拟合的过程比较两种假设检验方法(Waldtestvs.LRT)了解多重测试校正的重要性了解用于多重测试校正的不同方法1.模型拟合和假设检验DESeq2工作流......
  • 认识 Vue project
    使用Vue-CLI创建项目准备工作下载node和npmnpmcomesbundledwithnode(npm会随node一起被下载)根据个人需求选择一个版本下载即可,对于基本操作来说没有......
  • 深度学习100问
    目录​​●BatchNormalization的作用​​​​●梯度消失​​​​●循环神经网络,为什么好?​​​​●什么是Group Convolution​​​​●什么是RNN​​​​●训练过程......
  • Android音乐播放器的设计与实现
    课程设计报告实习名称 课程设计2设计题目 Android音乐播放器的设计与实现目录摘要111引言222可行性分析222.1技术可行性222.2经济可行性332.3管理可行性332.4可行性......
  • TensorFlow模型的保存与恢复加载 ckpt
     我们使用TensorFlow进行模型的训练,训练好的模型需要保存,预测阶段我们需要将模型进行加载还原使用,这就涉及TensorFlow模型的保存与恢复加载。总结一下Tensorflow常用的模型......
  • memcached 入门学习
    1、概念     memcached是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。2、......
  • memcached 相关资源汇总
    Memcached官方站点:​​http://www.danga.com/memcached​​/MemcachedWin321.2.6下载:​​http://code.jellycan.com/memcached/​​安装帮助:​​Windows下的.NET+Memcach......
  • 动动鼠标的软件就可以出一个用python写十几行代码的图片
    动动鼠标的软件就可以出一个用python写十几行代码的图片文章目录​​动动鼠标的软件就可以出一个用python写十几行代码的图片​​​​那这个如今到底是啥如今呢?​​​​它就......
  • 安卓手机网上商城-2号店
    我在此次安卓项目实训中担任我们组的项目技术组长,我一直在监督组员们设计界面写代码,和项目进行情况,并和组长一起写前台,后台程序,包括设计数据库等等。我在这次实训中学到了很......