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 ...
随机推荐
- python中常用得字符串,列表函数汇总
字符串函数: 1,replace函数,替换函数.s = s.replace(old,new),老得元素被新的元素替换.注意不能直接写s.replace(old,new).要写s=s.replace(o ...
- label runat="server"
<label id="lblWhiteIp_Text_Info" runat="server"></label> 后台对应的类型是 pr ...
- Java学习之线程间通信(双线程)
线程间通讯:多个线程在处理同一资源,但是任务不同 练习一:双线程出现线程安全问题,需要使用同步,思考同步代码添加位置需求:银行账户存钱,显示谁在账户存钱了,存了多少钱分析:操作同一银行账户两个不同的操 ...
- Asp.Net Core 第05局:读取配置
前言 本文介绍Asp.Net Core 读取配置文件. 环境 1.Visual Studio 2017 2.Asp.Net Core 2.2 开局 前期准备 1.添加app.j ...
- JS 提取公式中的参数
'A+B-C/D*E'.split(/[*/()+-]/) => [A,B,C,D,E]
- fpm rpm制作
使用fpm命令制作rpm包并安装 工作中有如下情况需要将文件打包rpm: 避免重复工作,将源码程序打包为rpm 使用yum发布项目,项目打包为rpm 将自己写好的程序打包为rpm,提供给用户下载 其他 ...
- day 84 Xadmin组件之构建表单数据
一 .先设置一些相关配置 1. 创建数据库模型. 在app01 下创建 from django.db import models # Create your models here. class Au ...
- Selenium:火狐Try Xpath插件替代Firebug和Firepath
什么是Xpath? XPath是XML的路径语言,通俗一点讲就是通过元素的路径来查找到这个标签元素. 工具 Xpath的练习建议大家安装火狐浏览器后,下载插件,try path. 在Selenium中 ...
- VB - 循环
循环控制语句有for……next循环.for……each循环.do……while循环.do……until循环.while循环五种形式. 1. 在使用循环控制语句前,首先要对循环条件进行判断,如果循环次 ...
- 希尔排序(shell)理论---不含源码
| 版权声明:本文为博主原创文章,未经博主允许不得转载. 希尔排序,是一个缩小增量排序.它根据步长来进行排序,步长不同可能会产生不同的序列,但是他们的最终结果是相同的,希尔排序的官方理论难以理解, ...