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)的更多相关文章

  1. Webdriver API (二)

    (转载) 1.3 打开测试页面 对页面对测试,首先要打开被测试页面的地址(如:http://www.google.com),web driver 提供的get方法可以打开一个页面: // And no ...

  2. Webdriver API (一)

    (转载) 1.1  下载selenium2.0的包 官方download包地址:http://code.google.com/p/selenium/downloads/list 官方User Guid ...

  3. Webdriver API (三)- actions

    Actions类主要定义了一些模拟用户的鼠标mouse,键盘keyboard操作.对于这些操作,使用perform()方法进行执行. actions类可以完成单一的操作,也可以完成几个操作的组合. 有 ...

  4. 移动端自动化测试(二)之 Appium常用的API(python)函数介绍

    上一章节已经介绍了Appium的环境搭建,其实只要掌握了Appium的工作原理,前期的准备工作和安装过程是比较简单的.那么当我们搭建好Appium环境后接下来做些什么呢?通常思路是开始appium的第 ...

  5. Robotframework-Appium 之常用API(一)

    上一遍隨筆(https://www.cnblogs.com/cnkemi/p/9639809.html)用Python + Robotframework + Appium對Android app小試牛 ...

  6. 我这么玩Web Api(二):数据验证,全局数据验证与单元测试

    目录 一.模型状态 - ModelState 二.数据注解 - Data Annotations 三.自定义数据注解 四.全局数据验证 五.单元测试   一.模型状态 - ModelState 我理解 ...

  7. [Android]使用Dagger 2依赖注入 - API(翻译)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5092525.html 使用Dagger 2依赖注入 - API ...

  8. [转]ASP.NET Web API(三):安全验证之使用摘要认证(digest authentication)

    本文转自:http://www.cnblogs.com/parry/p/ASPNET_MVC_Web_API_digest_authentication.html 在前一篇文章中,主要讨论了使用HTT ...

  9. ASP.NET Web API(三):安全验证之使用摘要认证(digest authentication)

    在前一篇文章中,主要讨论了使用HTTP基本认证的方法,因为HTTP基本认证的方式决定了它在安全性方面存在很大的问题,所以接下来看看另一种验证的方式:digest authentication,即摘要认 ...

  10. ASP.NET Web API(二):安全验证之使用HTTP基本认证

    在前一篇文章ASP.NET Web API(一):使用初探,GET和POST数据中,我们初步接触了微软的REST API: Web API. 我们在接触了Web API的后就立马发现了有安全验证的需求 ...

随机推荐

  1. 2019牛客国庆集训派对day5

    2019牛客国庆集训派对day5 I.Strange Prime 题意 \(P=1e10+19\),求\(\sum x[i] mod P = 0\)的方案数,其中\(0 \leq x[i] < ...

  2. umount:将文件设备卸载

    [root@centos57 ~]# umount /dev/hda1 用设备文件名来卸载 [root@centos57 ~]# umount /aixi                     用挂 ...

  3. node中没有全局作用域,只有模块作用域(文件作用域)

    node中没有全局作用域,只有模块作用域(文件作用域)

  4. ZOJ2562

    ZOJ2562https://vjudge.net/problem/11781/origin<=n的且因子数最多的那个数做法:同因子数取最小,dfs更新答案 #include <iostr ...

  5. AutoIt自动化编程(1)【转】

    1.运行程序 Run 命令或者函数用来运行外部可执行文件 AU3:Run ( "文件名" [, "工作目录" [, 标志]] ) EXAMPLE: AU3:Ru ...

  6. python+selenium中webdriver相关资源

    Chrome chrome的webdriver :  http://chromedriver.storage.googleapis.com/index.html chrome的webdriver需要对 ...

  7. PostgreSQL:COALESCE函数

    COALESCE函数是返回参数中的第一个非null的值,它要求参数中至少有一个是非null的,如果参数都是null会报错. select COALESCE(null,null); //报错 selec ...

  8. ODOO/OPENERP的网页模块QWEB简述

    1.web 模块 注意,OpenERP 模块中 web 部分用到的所有文件必须被放置在模块内的 static 文件夹里.这是强制性的,出于安全考虑. 事实上,我们创建的文件夹 CSS,JS 和 XML ...

  9. HTML - 表格标签相关

    <html> <head></head> <body> <!-- table (表格) border : 表格的边框 width : 表格的宽 h ...

  10. data方法也是模型类的连贯操作方法之一,

    data方法也是模型类的连贯操作方法之一,用于设置当前要操作的数据对象的值. 写操作 通常情况下我们都是通过create方法或者赋值的方式生成数据对象,然后写入数据库,例如: $Model = D(' ...