Selenium--调用js,对话框处理 (python)
前言:
本次教程针对Python语言,selenium教程(调用js,对话框处理)
一、对话框处理
更多的时候我们在实际的应用中碰到的并不是简单警告框,而是提供更多功能的会话框。
本节重点:
1、打开对话框
2、关闭对话框
3、操作对话框中的元素
4、window_handles 获得所有窗口
5、switch_to.windows 切换窗口
(selenium3中,switch_to_windows 更改为switch_to.windows )
举例:某网站付款之前弹出阅读协议弹框,点击协议名称,打开新窗口并展示协议内容,见下图。(本次使用火狐浏览器来定位元素)

以下为部分代码:
#弹出div对话框,点击第一条协议,div对话框的元素定位方法与正常页面元素一致。
driver.find_element_by_xpath("//div[9]/div[2]/div[1]/p[1]/a[1]").click()
#获取所有窗口
allhandles = driver.window_handles
#切换新窗口查看协议
driver.switch_to.window(allhandles[1])
time.sleep(2)
#切换回div弹窗的窗口
driver.switch_to.window(allhandles[0])
time.sleep(2)
#点击勾选复选框
driver.find_element_by_id("agreementbox").click()
#点击确定按钮
driver.find_element_by_xpath("//div[9]/div[2]/div[2]/p[2]/a").click()
time.sleep(3)
二、调用js
在实现自动化的过程中,遇到selenium不能实现的功能,可以调用js来实现
本节重点:
1、调用 js 方法 execute_script(script, *args)
2、在当前窗口/框架 同步执行 javaScript
3、script:JavaScript 的执行。
4、*args:适用任何 JavaScript 脚本。
推荐js学习网站:
http://www.w3school.com.cn/js/index.asp
fadeOut()函数
用于隐藏所有匹配的元素,并带有淡出的过渡动画效果。
所谓"淡出"的动画效果,即元素的不透明度的比例从100%逐渐减小到0%。
如果元素本身是隐藏的,则不对其作任何改变。如果元素是可见的,则将其隐藏。
#第一种方法
driver.execute_script('$("#buyButton").fadeOut();')
#第二种方法
element = driver.find_element_by_xpath("//form/div/p[1]")
driver.execute_script('$(arguments[0]).fadeOut()', element)
解释:arguments对象,它是调用对象的一个特殊属性,用来引用Arguments对象。
HTML DOM borderStyle 属性
borderStyle 属性在一行声明中为所有四个设置或返回边框样式。
该属性可使用 1 到 4 种样式。
#将输入框标红,定义为实线solid
js = "var q=document.getElementById(\"money\");q.style.border=\"1px solid red\";"
# 调用 js
driver.execute_script(js)
解释:q.style.border=\"1px solid red\
元素 q 的样式,边框为1个像素红色
readOnly属性的日期文本框

#定位文本框,输入日期,开始时间为2015-07-24
js = "$('#start_date').val('2015-07-24');“
#调用js
driver.execute_script(js)
通过js修改display的值

#定位ul[0]这组标签,修改样式为block
js = 'document.querySelectorAll("ul")[0].style.display="block";‘
#调用js
driver.execute_script(js)
解释:
选择所有的ul。 [0] 指定这一组标签里的第几个。
style.display="block"; 修改样式的display="block" ,表示可见。
以上,为本次举例,后续发现好用的例子,继续补充~~~
Selenium--调用js,对话框处理 (python)的更多相关文章
- Java&Selenium调用JS实现高亮被操作页面元素高亮
Java&Selenium调用JS实现高亮被操作页面元素高亮 /* * the method of invoking js to do something * * @author daviey ...
- python之selenium调用js(execute_script)
转载: http://www.cnblogs.com/fnng/p/3230768.html 本节重点: 调用js方法 execute_script(script, *args) 在当前窗口/框架 同 ...
- python selenium --调用js
转自:http://www.cnblogs.com/fnng/p/3230768.html 本节重点: 调用js方法 execute_script(script, *args) 在当前窗口/框架 同步 ...
- selenium调用JS实现自动化
webdriver自带的api使用起来有局限性,比如下拉滚动条文本框输入,以及一些弹出框的操作,使用JS直接操作方便又灵活. 一:示例 from selenium import webdriver f ...
- selenium 调用JS操作滚动条(java)来解决element not clickable的问题
今天在运行自动化用例的时候,发现总是某个元素提示not clickable.分析原因有可能是页面右下角那个大大的top图标,刚好挡住了我要点击的元素.要解决就得拉动页面,就需要操作页面上的滚动条. ...
- Selenium with Python 005 - 调用js操作页面元素
WebDriver提供了execute_script()方法来执行JavaScript方法,格式如 driver.execute_script(script,*args) 执行js一般有两种场景,一是 ...
- Python selenium的js扩展实现
python写的数据采集,对一般有规律的页面用 urllib2 + BeautifulSoup + 正则就可以搞定. 但是有些页面的内容是通过js生成,或者通过js跳转的,甚至js中还加入几道混淆机制 ...
- python 调用js代码
Python2 安装pyv8 pip install-egit://github.com/brokenseal/PyV8-OS-X#egg=pyv8 from pyv8 import PyV8 c ...
- selenium 代理 Cookies 截图 等待 调用JS
改变用户代理 读取Cookies 调用Java Script Webdriver截图 页面等待 1. 改变用户代理 import org.junit.AfterClass; import org.ju ...
随机推荐
- 记一次隐秘的XSS漏洞挖掘
前言 在为某客户网站做渗透测试时发现一个有趣的事情.当我访问该网站的某条链接时服务器返回的是404页面.看到这里我当时就下意识的忽略它,但是后来又想了想这也不是完全没有价值,毕竟中间件及其版本都出来了 ...
- 安装和配置Apache服务器(上)
首先,安装软件分安装版和压缩版,压缩版也就是我们现在所说的绿色安装包.安装板和压缩版的区别就是,安装板在安装的时候就已经自动给你配置好环境,压缩版安装之后还要自己配置环境.自己配置环境也是有好处的,知 ...
- Python接口自动化--SSL 3
官方文档参考地址: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings 针对SSL Warnings,u ...
- js 判断元素是否在列表中
/** * 使用循环的方式判断一个元素是否存在于一个数组中 * @param {Object} arr 数组 * @param {Object} value 元素值 */ function isInA ...
- Django使用静态文件
除了由服务器生成的HTML文件外,网页应用一般需要提供其它必要的文件 —— 比如图片文件.JavaScript脚本和CSS样式表 —— 来为用户呈现出一个完整的网站. 在Django中,我们将这些文件 ...
- 【转】SQL 常用关键字释义和用法
转自: http://blog.csdn.net/iamwangch/article/details/8093933 下面 是 从网络上整理 出来的 SQL 关键字和 常用函数的 释义和简单用 ...
- linux内核中socket的创建过程源码分析(详细分析)
1三个相关数据结构. 关于socket的创建,首先需要分析socket这个结构体,这是整个的核心. 104 struct socket { 105 socket_state ...
- Kafka设计解析(二十一)Kafka水位(high watermark)与leader epoch的讨论
转载自 huxihx,原文链接 Kafka水位(high watermark)与leader epoch的讨论 本文主要讨论0.11版本之前Kafka的副本备份机制的设计问题以及0.11是如何解决的. ...
- P1341 无序字母对
题目描述 给定n个各不相同的无序字母对(区分大小写,无序即字母对中的两个字母可以位置颠倒).请构造一个有n+1个字母的字符串使得每个字母对都在这个字符串中出现. 输入输出格式 输入格式: 第一行输入一 ...
- HDU 3072 Intelligence System(tarjan染色缩点+贪心+最小树形图)
Intelligence System Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...