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
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

目录
相关文章
|
1月前
|
JSON JavaScript 前端开发
在Python中调用和执行JavaScript
在Python中调用和执行JavaScript主要通过`PyExecJS`库实现。安装库后,可以使用`execjs.compile`编译JS代码并用`eval`或`call`执行。此外,还能加载JavaScript库和框架,调用外部JS文件,处理返回值,以及在两者间传递数据。Python和JavaScript各有优劣,适用于不同场景,结合使用可增强项目功能和灵活性。
27 0
|
2月前
|
JavaScript 前端开发 测试技术
使用Selenium执行JavaScript脚本:探索Web自动化的新领域
本文介绍了如何在Selenium中使用JavaScript解决自动化测试中的复杂问题。Selenium的`execute_script`函数用于同步执行JS,例如滑动页面、操作时间控件等。在滑动操作示例中,通过JS将页面滚动到底部,点击下一页并获取页面信息。对于只读时间控件,利用JS去除readonly属性并设置新日期。使用JS扩展了Selenium的功能,提高了测试效率和精准度,适用于各种自动化测试场景。
54 1
|
1天前
|
JavaScript 前端开发 Java
《手把手教你》系列技巧篇(四十)-java+ selenium自动化测试-JavaScript的调用执行-下篇(详解教程)
【5月更文挑战第4天】本文介绍了如何使用JavaScriptExecutor在自动化测试中实现元素高亮显示。通过创建并执行JS代码,可以改变元素的样式,例如设置背景色和边框,以突出显示被操作的元素。文中提供了一个Java示例,展示了如何在Selenium中使用此方法,并附有代码截图和运行效果展示。该技术有助于跟踪和理解测试过程中的元素交互。
7 0
|
2天前
|
编解码 JavaScript 前端开发
python如何解决js逆向混淆?
python如何解决js逆向混淆?
7 0
|
2天前
|
Web App开发 JavaScript 前端开发
《手把手教你》系列技巧篇(三十九)-java+ selenium自动化测试-JavaScript的调用执行-上篇(详解教程)
【5月更文挑战第3天】本文介绍了如何在Web自动化测试中使用JavaScript执行器(JavascriptExecutor)来完成Selenium API无法处理的任务。首先,需要将WebDriver转换为JavascriptExecutor对象,然后通过executeScript方法执行JavaScript代码。示例用法包括设置JS代码字符串并调用executeScript。文章提供了两个实战场景:一是当时间插件限制输入时,用JS去除元素的readonly属性;二是处理需滚动才能显示的元素,利用JS滚动页面。还给出了一个滚动到底部的代码示例,并提供了详细步骤和解释。
26 10
|
18天前
|
前端开发 测试技术 C++
Python自动化测试面试:unittest、pytest与Selenium详解
【4月更文挑战第19天】本文聚焦Python自动化测试面试,重点讨论unittest、pytest和Selenium三大框架。unittest涉及断言、TestSuite和覆盖率报告;易错点包括测试代码冗余和异常处理。pytest涵盖fixtures、参数化测试和插件系统,要注意避免过度依赖unittest特性。Selenium的核心是WebDriver操作、等待策略和测试报告生成,强调智能等待和元素定位策略。掌握这些关键点将有助于提升面试表现。
24 0
|
27天前
|
Web App开发 测试技术 网络安全
|
1月前
|
JavaScript 前端开发 API
如何利用Python的Flask框架与Vue.js创建RESTful API服务
【4月更文挑战第10天】本文介绍了如何使用Flask和Vue.js创建一个前后端分离的RESTful API服务。Flask作为后端框架,负责提供CRUD操作,与SQLite数据库交互;Vue.js作为前端框架,构建用户界面并利用axios库与后端API通信。通过示例代码,展示了Flask设置路由处理用户数据以及Vue组件如何调用API获取和操作数据。此基础结构为构建更复杂的Web应用提供了起点。
|
2月前
|
Web App开发 前端开发 JavaScript
Python Selenium是一个强大的自动化测试工具
Python Selenium是一个强大的自动化测试工具
|
2月前
|
JavaScript 前端开发 Python
生成X-Bogus的js代码,通过python调用生成
该文本是一个关于如何解析和执行JavaScript代码的步骤说明。主要内容包括: 1. 找到JavaScript文件的位置。 2. 下载代码并进行格式化。 3. 运行代码时会出现缺少变量错误,需要添加模拟环境的代码。 4. 指出主要的入口函数是`_0x5a8f25`,将其赋值给`window`。 5. 提供了整个JavaScript代码的长串内容。 6. 提供了一个Python脚本,用于调用这个JavaScript函数并处理返回的数据。 总结:这段文本描述了如何处理和运行一个JavaScript文件,以及使用Python来与这个脚本交互的示例。