016-WebDriver API(2)
1. 多表单切换
WebDriver只能在一个页面上对元素进行识别和定位,无法直接定位frame/iframe表单内嵌页面上的元素,这是就需要通过switch_to.frame()方法将当前定位的主体切换为frame/iframe表单的内嵌页面
通过switch_to.frame()切换表单
通过switch_to.default_content()回到最外层的页面
from time import sleep
from selenium import webdriver driver = webdriver.Chrome()
driver.get("http://www.126.com")
driver.maximize_window()
sleep(2) driver.find_element_by_link_text("密码登录").click()
login_frame = driver.find_element_by_css_selector("iframe[id^=x-URS-iframe]") driver.switch_to.frame(login_frame)
driver.find_element_by_name("email").send_keys("user@126.com")
driver.find_element_by_name("password").send_keys("")
driver.find_element_by_id("dologin").click()
driver.switch_to.default_content()
2 多窗口切换
current_window_handle:获得当前窗口
子主题 1
window_handles:返回所有窗口的句柄到当前会话
switch_to.window():切换到相应的窗口
from selenium import webdriver driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.maximize_window() # 获得当前窗口句柄
search_window = driver.current_window_handle driver.find_element_by_link_text("登录").click()
driver.implicitly_wait(5)
driver.find_element_by_link_text("立即注册").click() # 获得当前所有窗口句柄
all_handles = driver.window_handles # 进入注册窗口进行操作
for handle in all_handles:
if handle != search_window:
driver.switch_to.window(handle)
print(driver.title)
driver.find_element_by_name("userName").send_keys("usename")
driver.find_element_by_xpath("//input[@id='TANGRAM__PSP_4__phone']").send_keys("134XXXXXXXX")
driver.close()
driver.switch_to.window(search_window)
print(driver.title)
driver.quit()
3 警告框处理
在WebDriver中处理Javascript生成的alert、confirm、prompt,使用switch_to.alert方法定位,然后使用text、accept、dismiss、send_keys等进行操作
text:返回alert、confirm、prompt中的文字信息
accept():接收现有警告框
dismiss():解散所有警告框
send_keys():在警告框中输入文本(如果可以输入文本的话)
from time import sleep
from selenium import webdriver driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.maximize_window() driver.find_element_by_link_text("设置").click()
driver.find_element_by_link_text("搜索设置").click()
sleep(2)
driver.find_element_by_class_name("prefpanelgo").click() # 获取警告框
alert = driver.switch_to.alert
text = alert.text
print(text)
# 接受警告框
alert.accept()
driver.quit()
4 下拉框处理
WebDriver提供了Select类来处理下拉框
导入Select类:
from selenium.webdriver.support.select import Select
Select类:用于定位<select>标签
select_by_value():通过value值定位下拉框选项
select_by_visible_text():通过text值定位下拉选项
select_by_index():根据下拉框的索引进行选择。第一个选项为0,第二个选项为1
from time import sleep
from selenium import webdriver
from selenium.webdriver.support.select import Select driver = webdriver.Chrome()
driver.get("http://www.baidu.com") link = driver.find_element_by_link_text("设置").click()
driver.find_element_by_link_text("搜索设置").click()
sleep(2) sel = driver.find_element_by_xpath("//select[@id='nr']")
sleep(2)
Select(sel).select_by_value("")
sleep(2)
Select(sel).select_by_index("")
sleep(2)
Select(sel).select_by_visible_text("每页显示10条")
5 窗口截图
WebDriver提供了截图函数save_screenshot(),可以用来截取当前窗口
from selenium import webdriver driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
# 截取当前窗口
driver.save_screenshot("./baidu.png")
driver.quit()
016-WebDriver API(2)的更多相关文章
- Webdriver API (二)
(转载) 1.3 打开测试页面 对页面对测试,首先要打开被测试页面的地址(如:http://www.google.com),web driver 提供的get方法可以打开一个页面: // And no ...
- Webdriver API (一)
(转载) 1.1 下载selenium2.0的包 官方download包地址:http://code.google.com/p/selenium/downloads/list 官方User Guid ...
- Webdriver API (三)- actions
Actions类主要定义了一些模拟用户的鼠标mouse,键盘keyboard操作.对于这些操作,使用perform()方法进行执行. actions类可以完成单一的操作,也可以完成几个操作的组合. 有 ...
- 移动端自动化测试(二)之 Appium常用的API(python)函数介绍
上一章节已经介绍了Appium的环境搭建,其实只要掌握了Appium的工作原理,前期的准备工作和安装过程是比较简单的.那么当我们搭建好Appium环境后接下来做些什么呢?通常思路是开始appium的第 ...
- Robotframework-Appium 之常用API(一)
上一遍隨筆(https://www.cnblogs.com/cnkemi/p/9639809.html)用Python + Robotframework + Appium對Android app小試牛 ...
- 我这么玩Web Api(二):数据验证,全局数据验证与单元测试
目录 一.模型状态 - ModelState 二.数据注解 - Data Annotations 三.自定义数据注解 四.全局数据验证 五.单元测试 一.模型状态 - ModelState 我理解 ...
- [Android]使用Dagger 2依赖注入 - API(翻译)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5092525.html 使用Dagger 2依赖注入 - API ...
- [转]ASP.NET Web API(三):安全验证之使用摘要认证(digest authentication)
本文转自:http://www.cnblogs.com/parry/p/ASPNET_MVC_Web_API_digest_authentication.html 在前一篇文章中,主要讨论了使用HTT ...
- ASP.NET Web API(三):安全验证之使用摘要认证(digest authentication)
在前一篇文章中,主要讨论了使用HTTP基本认证的方法,因为HTTP基本认证的方式决定了它在安全性方面存在很大的问题,所以接下来看看另一种验证的方式:digest authentication,即摘要认 ...
- ASP.NET Web API(二):安全验证之使用HTTP基本认证
在前一篇文章ASP.NET Web API(一):使用初探,GET和POST数据中,我们初步接触了微软的REST API: Web API. 我们在接触了Web API的后就立马发现了有安全验证的需求 ...
随机推荐
- iOS开发之SceneKit框架--SCNParametricGeometry.h
1.SCNParametricGeometry简介 SCNParametricGeometry用于创建简单的3D模型,比如SCNPlane 平面.SCNPyramid 锥形(金字塔).SCNBox 立 ...
- Web-动态页面
<!doctype html>01 - JavaEE- JSP - EL&JSTL figure:first-child { margin-top: -20px; } #write ...
- 处理提交html危险代码的异常方法
当向asp.net mvc提交有html标签的值时,服务器会报检测到潜在危险的Request.Form值,处理方法如下: 1:在接收处理的Action方法上面加上 [VaildateInput(fal ...
- bigcolorpicker 颜色拾取器插件——例
参考:http://bigui4.sinaapp.com/picker/colorpicker.html 效果: html: <!DOCTYPE html> <html> &l ...
- 编写Reduce处理逻辑
- Java虚拟机性能管理神器 - VisualVM(7) 排查JAVA应用程序线程泄漏【转】
Java虚拟机性能管理神器 - VisualVM(7) 排查JAVA应用程序线程泄漏[转] 标签: javajvm线程泄漏 2015-03-11 19:47 1098人阅读 评论(0) 收藏 举报 ...
- AutoIt自动化编程(1)【转】
1.运行程序 Run 命令或者函数用来运行外部可执行文件 AU3:Run ( "文件名" [, "工作目录" [, 标志]] ) EXAMPLE: AU3:Ru ...
- Python-数据分析模块
目录 numpy 模块 matplotlib 模块 pandas 模块 numpy 模块 numpy 模块主要用来做数据分析,对numpy数组 进行科学运算 主要方法和常用属性,都是用numpy 生成 ...
- localStorage,sessionStorage,cookie区别
localStorage:HTML5新增的在浏览器端存储数据的方法.设置和获取localStorage的方法: 设置: localStorage.name = 'zjj'; 获取: localStor ...
- 使用WCF上传文件
在WCF没出现之前,我一直使用用WebService来上传文件,我不知道别人为什么要这么做,因为我们的文件服务器和网站后台和网站前台都不在同一个机器,操作人员觉得用FTP传文件太麻 ...