Selenium-Switch与SelectApi介绍
Switch
我们在UI自动化测试时,总会出现新建一个tab页面,弹出一个浏览器级别的弹框或者是出现一个iframe标签,这时我们用WebDriver提供的Api接口就无法处理这些情况了。需要用到Selenium单独的模块switch_to模块
引用路径:
# 第一种方式可以通过直接导入SwitchTo模块来进行操作
from selenium.webdriver.remote.remote.switch_to import SwitchTo # 第二种方式是直接通过Webdriver的switch_to来操作
driver.switch_to
webdriver在以前的版本中已经为我们封装好了切换Windows,alert,iframe,现在依然可以使用,但是会被打上横线,代表他已经过时了,建议使用SwitchTo类来进行操作。
SwitchToWindows
handles=driver.window_handles
# SwitchToWindows接受浏览器TAB的句柄
driver.sitch_to.windows(handles[1])
#获取当前的tab名称
# handle=driver.current_window_handle
# print(handle)
#获取所有tab名称
driver.find_element_by_css_selector('[href="/new-index/"]').click()
handles=driver.window_handles
print(handles)
#切换tab页面
driver.switch_to.window(handles[1])
#验证是否正确切换到第二个页面上
driver.find_element_by_css_selector('#newtag').send_keys(1111)
SwitchToFrame
#SwichToFrame支持id,name,frame的element
# 接受定位到的iframe的Element,这样就可以通过任意一种定位方式进行定位了
frameElement = driver.find_element_by_name('top-frame')
driver.switch_to.frame(frameElement) # 通过fame的name、id属性定位
driver.switch_to.frame('top-frame') # 当存在多层iframe嵌套时,需要一层一层的切换查找,否则将无法找到
driver.switch_to.frame('top-frame')
driver.switch_to.frame('baidu-frame') # 跳转到最外层的页面
driver.switch_to.default_content() # 多层Iframe时,跳转到上一层的iframe中
driver.switch_to.parent_frame()
from selenium import webdriver
driver=webdriver.Chrome()
driver.get("http://ui.imdsx.cn/uitester/")
driver.maximize_window()#将窗口放大
driver.execute_script('window.scrollTo(0,0);')
#切换iframe
# driver.switch_to.frame('top-frame')
iframe=driver.find_element_by_css_selector('iframe[src="/new-index/"]')
driver.switch_to.frame(iframe)
driver.find_element_by_css_selector('#newtag').send_keys(1111)
#iframe 一定要一层一层找,层级一旦错误就定位失败
driver.switch_to.frame('baidu-frame')
driver.find_element_by_css_selector('#kw').send_keys(1111)
#返回到上一级iframe
driver.switch_to.parent_frame()
driver.find_element_by_css_selector('#newtag').clear()
#一次返回到最外层的iframe
driver.switch_to.default_content()
driver.find_element_by_css_selector('#i1').send_keys(2222)
SwitchToAlert
# alert 实际上也是Selenium的一个模块
from selenium.webdriver.common.alert import Alert # 也可以通过Webdriver的switch_to来调用 # 点击确认按钮
driver.switch_to.alert.accept() # 如果是确认弹框,相当于点击需要和X按钮
driver.switch_to.alert.dismiss() # 如果alert上有文本框时,可以输入文字。(注: 没遇到过)
driver.switch_to.alert.send_keys() # 返回Alert上面的文本内容
text = driver.switch_to.alert.text
from selenium import webdriver
driver=webdriver.Chrome()
driver.get("http://ui.imdsx.cn/uitester/")
driver.maximize_window()#将窗口放大
driver.execute_script('window.scrollTo(0,0);')
e=driver.find_element_by_css_selector('#alert')
e.click()
import time
time.sleep(2)
print(driver.switch_to.alert.text)#获取alert弹窗中的文本内容
driver.switch_to.alert.accept()#点击alert的确定按钮
from selenium import webdriver
driver=webdriver.Chrome()
driver.get("http://ui.imdsx.cn/uitester/")
driver.maximize_window()#将窗口放大
driver.execute_script('window.scrollTo(0,0);')
el=driver.find_element_by_css_selector('#confirm')
el.click()
import time
time.sleep(2)
print(driver.switch_to.alert.text)
# driver.switch_to.alert.accept()#点击确定
driver.switch_to.alert.dismiss()#点击取消
Select
在UI自动化测试过程中,经常会遇到一些下拉框,如果我们基于Webdriver操作的话就需要click两次,而且很容易出现问题,实际上Selenium给我们提供了专门的Select(下拉框处理模块)。
引用路径:
from selenium.webdriver.support.select import Select
Select操作
# 通过select选项的索引来定位选择对应选项(从0开始计数)
Select(s).select_by_index(5) # 通过选项的value属性值来定位
Select(s).select_by_value('') # 通过选项的文本内容来定位
Select(s).select_by_visible_text('牡丹江') # 返回第一个选中的optionElement对象
Select(s).first_selected_option # 返回所有选中的optionElement对象
Select(s).all_selected_options # 取消所有选中的option
Select(s).deselect_all() # 通过option的index来取消对应的option
Select(s).deselect_by_index(1) # 通过value属性,来取消对应option
Select(s).deselect_by_value('') # 通过option的文本内容,取消对应的option
Select(s).deselect_by_visible_text('')
from selenium import webdriver
driver=webdriver.Chrome()
driver.get("http://ui.imdsx.cn/html/")
driver.maximize_window()#将窗口放大
driver.execute_script('window.scrollTo(0,0);')
from selenium.webdriver.support.select import Select
#应用select模块必须为select标签编写的下拉框
#如果select元素不在页面中展示时(需要加载时),需要滑动到该元素位置时,才能操作:使用driver.execute_script('window.scrollTo(0,1800);'),高度自己调节
s=driver.find_element_by_xpath('//select[1]')
# Select(s).select_by_index(3)#四川
Select(s).select_by_value('')#北京
#当你的元素中还含有元素的话,就可以在find element来缩小范围
from selenium import webdriver
driver=webdriver.Chrome()
driver.get("http://ui.imdsx.cn/uitester/")
driver.maximize_window()#将窗口放大
driver.execute_script('window.scrollTo(0,0);')
from selenium.webdriver.support.select import Select
print(driver.find_element_by_css_selector('#on').is_selected())
print(driver.find_element_by_css_selector('#off').is_selected())#是否被选中()
Selenium-Switch与SelectApi介绍的更多相关文章
- Selenium学习之==>Switch与SelectApi接口详解
Switch 我们在UI自动化测试时,总会出现新建一个tab页面.弹出一个浏览器级别的弹框或者是出现一个iframe标签,这时我们用WebDriver提供的Api接口就无法处理这些情况了.需要用到Se ...
- selenium IDE工具页面介绍!
selenium IDE工具页面,常用功能点介绍
- Python + selenium + pycharm 环境部署细节 和selenium、Jenkins简单介绍
一.测试体系:Python + selenium + pycharm + Jenkins/docker 环境搭建: 1.安装python 3.4/3.5 2/3.6/ 3.7 2.配置环境变量 3.p ...
- Selenium - Switch & Select Api
一.多表单切换 driver.switch_to.frame() iframe :直接将一个html 页面嵌入另一个html 页面中 switch_to.frame() 默认可以直接取表单的id ...
- Java + selenium Timeout接口用法介绍
上一篇介绍了关于如何启动浏览器的方法.这篇文章要介绍一下,上一篇代码中关于等待时间的接口方法,代码如下: driver.manage().timeouts().pageLoadTimeout(5, T ...
- 使用selenium前学习HTML介绍
<!-- HTML 是用来描述网页的一种语言. HTML 指的是超文本标记语言 (Hyper Text Markup Language) HTML 不是一种编程语言,而是一种标记语言 (mark ...
- selenium常用方法,简版介绍
WebElement 接口共计16个------------接口 代表一个HTML元素.通常,所有与页面交互有关的有趣操作都将通过此界面执行. void clear() void click() We ...
- 【Selenium】1.介绍 Selenium
本文供学习交流之用,没有商业用途,没有盈利. 完全是我自己为督促自己学习而翻译的.翻译的不好,见谅.来源于:http://www.guru99.com/introduction-to-selenium ...
- 自动化测试-Selenium家谱介绍
一.自动化测试定义 自动化测试是通工具录制或编写脚本的方式模拟手工测试的过程,通过回放或运行脚本来执行测试用例,从而代替人工对系统的功能进行验证. 二.什么样的项目适合做自动化测试 1.需求明确,不会 ...
随机推荐
- javamail 附件以及正文加图片
直接上代码 import java.io.IOException; import java.io.InputStream; import java.util.Date; import java.uti ...
- 【LeetCode】 两数之和 twoSum
两数之和 (简单) 题目描述 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数: 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 例如: 给定 nums = [2,7,11, ...
- Ajax 实现导出文件-支持批量
个人感觉前端不行,好多东西记不住,所以只能将遇到的坎以及解决方案记录下,方便以后用到时查找. 首先:ajax不支持流,网上找了好多版本,感觉下面的方案不错,实验了下可行. 前端页面: <div ...
- Caffe深度学习计算框架
Caffe | Deep Learning Framework是一个清晰而高效的深度学习框架,其作者是博士毕业于UC Berkeley的 Yangqing Jia,目前在Google工作.Caffe是 ...
- SpringBoot整合Lintener
1.通过扫描完成Lintener组件的注册 1.1编写Listener /** * springboot整合Lintener 方式一 * 在web.xml中如何配置Listener * <lis ...
- Node.js 的环境配置
1.安装node.js 官网上面最新版本的nodejs 都是自带npm的.http://nodejs.cn/至于安装过程选择默认下载就行 2.安装淘宝镜像,也就是将国外的一些资源代理到国内. 步骤:1 ...
- python函数-作用域
可以把作用域”看成是变量的容器.当作用域被销毁时,所有保存在该作用 域内的变量的值就被丢弃了,只有一个全局作用域,它是在程序开始时创建的.如 果程序终止,全局作用域就被销毁,它的所有变量就被丢弃了. ...
- 第一次Java学习总结
初学Java感觉还是蛮可以的,可是做起题目来还是不能得心应手,自己不懂得太多太多,还是需要不断努力去学啊!下面我就把这些天学到的知识点总结一下: 初学Java,我把目前所学知识点总结如下: 1.jav ...
- Web API 入门三(参数绑定)
学到现在,感觉到微软的.NET各种框架和模型基础大致都差不多,所以,这部分内容大致和MVC部分差不多.在学习参事绑定之前,我们肯定要知道Controller(即控制器)是啥干啥的. 其实,Contro ...
- ES6扩展运算符(三点符号), 解构
http://www.cnblogs.com/chrischjh/p/4848934.html