Selenium--调用js,对话框处理 (python)

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

前言:

本次教程针对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" ,表示可见。


以上,为本次举例,后续发现好用的例子,继续补充~~~

作者:搁浅
出处: http://www.cnblogs.com/xiaoxi-3-/
如果对您有帮助,请关注我的同名简书:https://www.jianshu.com/u/da1677475c27
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

目录
相关文章
|
2月前
|
Web App开发 前端开发 JavaScript
探索Python科学计算的边界:利用Selenium进行Web应用性能测试与优化
【10月更文挑战第6天】随着互联网技术的发展,Web应用程序已经成为人们日常生活和工作中不可或缺的一部分。这些应用不仅需要提供丰富的功能,还必须具备良好的性能表现以保证用户体验。性能测试是确保Web应用能够快速响应用户请求并处理大量并发访问的关键步骤之一。本文将探讨如何使用Python结合Selenium来进行Web应用的性能测试,并通过实际代码示例展示如何识别瓶颈及优化应用。
124 5
|
3月前
|
JavaScript 前端开发 Python
用python执行js代码:PyExecJS库
文章讲述了如何使用PyExecJS库在Python环境中执行JavaScript代码,并提供了安装指南和示例代码。
123 1
用python执行js代码:PyExecJS库
|
27天前
|
数据采集 Web App开发 前端开发
Python爬虫进阶:Selenium在动态网页抓取中的实战
【10月更文挑战第26天】动态网页抓取是网络爬虫的难点,因为数据通常通过JavaScript异步加载。Selenium通过模拟浏览器行为,可以加载和执行JavaScript,从而获取动态网页的完整内容。本文通过实战案例,介绍如何使用Selenium在Python中抓取动态网页。首先安装Selenium库和浏览器驱动,然后通过示例代码展示如何抓取英国国家美术馆的图片信息。
55 6
|
2月前
|
数据采集 Web App开发 数据可视化
Python爬虫教程:Selenium可视化爬虫的快速入门
Python爬虫教程:Selenium可视化爬虫的快速入门
|
2月前
|
Web App开发 前端开发 JavaScript
JavaScript动态渲染页面爬取——Selenium的使用(一)
JavaScript动态渲染页面爬取——Selenium的使用(一)
|
2月前
|
前端开发 JavaScript API
JavaScript逆向爬取实战——使用Python实现列表页内容爬取(二)
JavaScript逆向爬取实战——使用Python实现列表页内容爬取(二)
|
2月前
|
数据采集 JavaScript 前端开发
JavaScript逆向爬虫——使用Python模拟执行JavaScript
JavaScript逆向爬虫——使用Python模拟执行JavaScript
|
2月前
|
Web App开发 数据采集 JavaScript
JavaScript动态渲染页面爬取——Selenium的使用(二)
JavaScript动态渲染页面爬取——Selenium的使用(二)
|
2月前
|
前端开发 JavaScript API
JavaScript逆向爬取实战——使用Python实现列表页内容爬取(一)
JavaScript逆向爬取实战——使用Python实现列表页内容爬取(一)
|
2月前
|
测试技术 数据安全/隐私保护 开发者
自动化测试的奥秘:如何用Selenium和Python提升软件质量
【9月更文挑战第35天】在软件开发的海洋中,自动化测试是那艘能引领我们穿越波涛的帆船。本文将揭开自动化测试的神秘面纱,以Selenium和Python为工具,展示如何构建一个简单而强大的自动化测试框架。我们将从基础出发,逐步深入到高级应用,让读者能够理解并实现自动化测试脚本,从而提升软件的质量与可靠性。