前言:

本次教程针对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)的更多相关文章

  1. Java&Selenium调用JS实现高亮被操作页面元素高亮

    Java&Selenium调用JS实现高亮被操作页面元素高亮 /* * the method of invoking js to do something * * @author daviey ...

  2. python之selenium调用js(execute_script)

    转载: http://www.cnblogs.com/fnng/p/3230768.html 本节重点: 调用js方法 execute_script(script, *args) 在当前窗口/框架 同 ...

  3. python selenium --调用js

    转自:http://www.cnblogs.com/fnng/p/3230768.html 本节重点: 调用js方法 execute_script(script, *args) 在当前窗口/框架 同步 ...

  4. selenium调用JS实现自动化

    webdriver自带的api使用起来有局限性,比如下拉滚动条文本框输入,以及一些弹出框的操作,使用JS直接操作方便又灵活. 一:示例 from selenium import webdriver f ...

  5. selenium 调用JS操作滚动条(java)来解决element not clickable的问题

    今天在运行自动化用例的时候,发现总是某个元素提示not  clickable.分析原因有可能是页面右下角那个大大的top图标,刚好挡住了我要点击的元素.要解决就得拉动页面,就需要操作页面上的滚动条. ...

  6. Selenium with Python 005 - 调用js操作页面元素

    WebDriver提供了execute_script()方法来执行JavaScript方法,格式如 driver.execute_script(script,*args) 执行js一般有两种场景,一是 ...

  7. Python selenium的js扩展实现

    python写的数据采集,对一般有规律的页面用 urllib2 + BeautifulSoup + 正则就可以搞定. 但是有些页面的内容是通过js生成,或者通过js跳转的,甚至js中还加入几道混淆机制 ...

  8. python 调用js代码

    Python2   安装pyv8 pip install-egit://github.com/brokenseal/PyV8-OS-X#egg=pyv8 from pyv8 import PyV8 c ...

  9. selenium 代理 Cookies 截图 等待 调用JS

    改变用户代理 读取Cookies 调用Java Script Webdriver截图 页面等待 1. 改变用户代理 import org.junit.AfterClass; import org.ju ...

随机推荐

  1. django模板系统(上)

    filters 过滤 default 替代作用 filesizeformat 格式化为人类可读 add 给变量加参数 lower 小写 upper 大写 title 标题 ljust 左对齐 rjus ...

  2. Oracle RMAN 恢复数据库到不同主机(二)

    我们在recover database时报一个错误: RMAN-06054: media recovery requesting unknown archived log for thread 1 w ...

  3. MP实战系列(十)之SpringMVC集成SpringFox+Swagger2

    该示例基于之前的实战系列,如果公司框架是使用JDK7以上及其Spring+MyBatis+SpringMVC/Spring+MyBatis Plus+SpringMVC可直接参考该实例. 不过建议最好 ...

  4. XmlSpy / XSD以及验证

    很早以前看过一句话:“XML就象空气”,在企业应用开发中XML是一个重要的数据交换标准.而XSD则可以用来校验XML的数据格式是否正确. 一个典型的XSD文件如下: <?xml version= ...

  5. WorldWind源码剖析系列:视景体类Frustum

    PluginSDK中的视景体类Frustum是三维计算机图形学中的概念,主要用来描述透视投影的过程.三维计算机图形学中关于三维物体的渲染,Direct3D和OpenGL都是先通过对现实世界中的场景先进 ...

  6. Publisher和Subscriber节点

    一.Publisher节点 /*"ros/ros.h"里面包含了ROS系统内最常用的一些头文件,包含此文件,便可以使用ROS的核心功能.*/#include "ros/r ...

  7. Python2.7-io

    io 模块,用于处理流数据,在 python2 下,是内置 file 对象的另一种选择,在 python3 下,此模块是默认的文件和流数据的接口. 1.模块继承关系 IOBase--RawIOBase ...

  8. Android 给CheckBox设置背景

    一般来说我们给控件(Button,LinearLayout,ImageView,TextView等)设这背景的时候只需要设置这些控件的android:background即可, 但是在给CheckBo ...

  9. Makefile 学习记录一

    2019年2月5日10:18:13  大年初一 整理 uboot-2018-11 源代码 根目录下的 Makefile . ifeq ("$(origin O)", "c ...

  10. 【chrome】安装证书并配置为受信任网站连接(windows)

    当出现网站连接非私密连接不受信任时,可添加证书crt文件到系统证书里设置为受信任 1.chrome设置中, 高级-- 管理证书 2.选择  受信任的根证书颁发机构 -- 导入 3.下一步  找到所需要 ...