selenium多表单操作与多窗口,以及警告框处理
知识是需要经常温习的,不然是很容易遗忘的。
以前自己操作IFRAME,多窗口的时候,觉得很简单。半年没有操作自动化了,知识又还了回去。
写博客有一个好处,可以把自己记住的知识点记录下来,这样,以后自己来翻看的时候,可以很快的找到思路。
毕竟自己不是大神,所以还是多记录一下。
一,多表单切换:
例子:
driver.switch_to.iframe(""if"")
driver.find_element_by_css_selector("[name=kw].").click()
switch_to.frame()默认可以直接取表单的ID,name属性。如果iframe没有可用的id,name属性,则可以通过下面的方式进行的定位。
xf=driver.find_element_by_css_selector(".class") #先通过CSS定位到iframe
driver.switch_to.frame(xf) ##再将定位对象传给switch_to.frame()方法。
driver.find_element_by_css_selector(".class") ###再来操作元素。
driver.switch_to.parent_frame() ###完成了再当前表单上的操作,则跳出当前一级表单。
多窗口操作:
from selenium import webdriver
driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(10)
import time
driver.get("https://www.baidu.com/") #获取当前页面句柄
current_handle=driver.current_window_handle
driver.find_element_by_css_selector("div#u1>a:nth-child(7)").click()
driver.find_element_by_link_text(u"立即注册").click()
time.sleep(1) #获得当前所有打开窗口的句柄
all_handles=driver.window_handles #进入注册页面窗口
for handle in all_handles:
if handle!=current_handle:
driver.switch_to_window(handle)
driver.find_element_by_css_selector("[name=userName]").clear()
driver.find_element_by_css_selector("[name=userName]").send_keys("username")
driver.find_element_by_css_selector("[name=phone]").clear()
driver.find_element_by_css_selector("[name=phone]").send_keys(1313313)
time.sleep(1) #回到百度搜索页面
for handle in all_handles:
if handle==current_handle:
driver.switch_to_window(current_handle)
driver.find_element_by_css_selector("#TANGRAM__PSP_4__closeBtn").click()
time.sleep(1)
driver.find_element_by_css_selector("#kw").send_keys("selenium")
driver.find_element_by_css_selector("#su").click()
time.sleep(2) driver.quit()
直接上例子,看的更直观些。
三:警告框操作
# coding=utf-8
from selenium import webdriver
from selenium.webdriver import ActionChains driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(10)
import time
driver.get("https://www.baidu.com/") #鼠标移到“设置”按钮上
link=driver.find_element_by_link_text(u"设置")
ActionChains(driver).move_to_element(link).perform() #点击“搜索设置”
driver.find_element_by_link_text(u"搜索设置").click() #点击搜索设置按钮
time.sleep(1)
driver.find_element_by_css_selector("div#gxszButton>a:first-child").click()
time.sleep(1) #跳转到弹出框并点击确定按钮
driver.switch_to_alert().accept()
time.sleep(1) driver.quit() 这是百度设置中的一个警告框,当作一个例子。 四:下拉框操作;
例子:
xialakuang=driver.find_element_by_css_selector("div.title>select")
Select(xialakuang).select_by_visible_text(u"已中奖")
selenium多表单操作与多窗口,以及警告框处理的更多相关文章
- js控制表单操作的常用代码小结
收集了一些在WEB前台开发中常用的一些控制表单操作函数. 1.鼠标经过时自动选择文本鼠标划过自动选中:<input type="text" value="默认值&q ...
- 不可错过的10个超棒jQuery表单操作代码片段
jQuery 绝对是一个伟大的开源javascript类库,是帮助我们快速和高效开发前端应用的利器.可能大家在日常的开发过程中常常会处理表单相关的 javascript,在今天这篇代码片段分享文章中, ...
- Selenium切换窗口,警告框处理,调用JavaScript代码
多窗口切换 在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要主机切换到新打开的窗口上进行操作. WebDriver提供了switch_to.window()方法,可以实现在不同的窗口之间切 ...
- selenium多表单切换以及多窗口切换、警告窗处理
selenium表单切换 在做UI自动化,有时候要定位的元素属性在页面上明明是唯一的.却怎么也不执行对元素的操作动作,这时候多半是iframe表单在作怪. 切入表单:iddriver.switch_t ...
- 10 个实用的 jQuery 表单操作代码片段
jQuery 绝对是一个伟大的开源JavaScript类库,是帮助我们快速和高效开发前端应用的利器.可能大家在日常的开发过程中常常会处理表单相关的 JavaScript,在今天这篇代码片段分享文章中, ...
- 10个超棒jQuery表单操作代码片段
jQuery绝对是一个伟大的开源javascript类库,是帮助我们快速和高效开发前端应用的利器.可能大家在日常的开发过程中常常会处理表单相关的javascript,在今天这篇代码片段分享文章中,这里 ...
- JS 08表单操作_表单域
一.表单的获取方式 document.getElementById() document.forms[index]; document.forms[form_name] document.form_n ...
- Jquery操作radio,checkbox,select表单操作实现代码
一 .Select jQuery获取Select选择的Text和Value: 1. $("#select_id").change(function(){//code...}); / ...
- HTML表单操作的记录
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
随机推荐
- [CSP-S模拟测试]:weight(Kruskal+树链剖分)
题目描述 给你一个$n$个点$m$条边的带边权的无向图(无重边,无自环),现在对于每条边,问你这条边的权值最大可以是多大,使得这条边在无向图的所有最小生成树中?(边权都是整数). 输入格式 第一行包含 ...
- 安装maven之后,cmd提示mvn不是内部命令的解决办法
1.maven的安装教程 下载地址为:http://maven.apache.org/download.cgi 进入此页面之后 点击下载,然后解压,我把目录名改为maven,目录结构如下图所示 下面我 ...
- PHP缓存技术OB系统函数(总结)
PHP缓存技术OB系统函数(总结) 一.总结 一句话总结: ob相比于php普通的文件操作多了缓存机制,所以适合做php的页面静态缓存 1.为什么php使用ob做静态文件缓存? 解决header()报 ...
- 测开之路三十四:html常用标签
网页的结构: HTML:超文本标记语言是迄今为止网络上应用最为广泛的语言,也是构成网页文档的主要语言.HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字.图形.动画.声音.表格.链 ...
- 支付宝PC端接入PHP
引入支付宝接口 放入一个插件库中,方便管理 创建支付类 1.发起支付 public function init() { $order_id = $_REQUEST['order_id']; $orde ...
- Html5 学习笔记 【PC固定布局】 实战6 咨询页面
最终效果: Html页面代码: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta char ...
- 嵌入式C语言3.3 关键字---逻辑结构
1. if else if(条件表达式){ ****;} else {xxxxxx;} 2. switch case default 3. do while for 4. con ...
- Cocos2d 之FlyBird开发---GameScore类
| 版权声明:本文为博主原创文章,未经博主允许不得转载. 这个类主要实现的是,显示历次成绩中的最好成绩.当然我写的这个很简洁,还可以写的更加的丰富.下面贴上代码: GameScore.h #ifn ...
- Cocos2d-x之Array
| 版权声明:本文为博主原创文章,未经博主允许不得转载. Array是一个列表类容器,是一种线性序列结构:列表容器中的元素是有序的,可以通过下标来访问,就和数组一样.其中Vector也是一种列表容 ...
- HTTP面试题目
转自:http://m.blog.csdn.net/zhangliangzi/article/details/51336564 1.说一下什么是Http协议? 对器客户端和 服务器端之间数据传输的格式 ...