python之selenium调用js(execute_script)
2017-05-18 17:02
281 查看
转载: http://www.cnblogs.com/fnng/p/3230768.html
本节重点:
调用js方法:execute_script(script, *args)
在当前窗口/框架 同步执行javaScript
脚本:JavaScript的执行。
*参数:适用任何JavaScript脚本。
使用:driver.execute_script(‘document.title’)
使快播登陆用户名输入框标红显示:
js解释:
q=document.getElementById(\"user_name\")
元素q的id 为user_name
q.style.border=\"1px solid red\
元素q的样式,边框为1个像素红色
隐藏元素
js.html
(保持html文件与执行脚本在同一目录下)
执行js一般有两种场景:
一种是在页面上直接执行JS
另一种是在某个已经定位的元素上执行JS
js解释:
arguments对象,它是调用对象的一个特殊属性,用来引用Arguments对象。Arugments对象就像数组。
fadeOut() 方法使用淡出效果来隐藏被选元素,假如该元素是隐藏的。
PS:可以看到js 可以做selenium 做不到的事情,但是在什么样的自动化的时候才能(或必须)要js帮忙,我还没遇到过。不过js可以
selenium完成更强大的功能,这是不容置疑的。
另外,之前没有学过JS ,所以js代码很陌生。如果有时间的话也建议各位同学补充这方面的知识。UI自动化离不开前端技术。
本节重点:
调用js方法:execute_script(script, *args)
在当前窗口/框架 同步执行javaScript
脚本:JavaScript的执行。
*参数:适用任何JavaScript脚本。
使用:driver.execute_script(‘document.title’)
使快播登陆用户名输入框标红显示:
#coding=utf-8 from selenium import webdriver import time driver = webdriver.Firefox() driver.get("http://passport.kuaibo.com/login/?referrer=http%3A%2F%2Fvod.kuaibo.com%2F%3Ft%3Dhome") #给用户名的输入框标红 js="var q=document.getElementById(\"user_name\");q.style.border=\"1px solid red\";" #调用js driver.execute_script(js) time.sleep(3) driver.find_element_by_id("user_name").send_keys("username") driver.find_element_by_id("user_pwd").send_keys("password") driver.find_element_by_id("dl_an_submit").click() time.sleep(3) driver.quit()
js解释:
q=document.getElementById(\"user_name\")
元素q的id 为user_name
q.style.border=\"1px solid red\
元素q的样式,边框为1个像素红色
隐藏元素
js.html
<html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <title>js</title> <script type="text/javascript" async="" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" /> <script type="text/javascript"> $(document).ready(function(){ $('#tooltip').tooltip({"placement": "right"}); }); </script> </head> <body> <h3>js</h3> <div class="row-fluid"> <div class="span6 well"> <a id="tooltip" href="#" data-toggle="tooltip" title=" selenium-webdriver(python)">hover to see tooltip</a> <a class="btn">Button</a> </div> </div> </body> <script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script> </html>
(保持html文件与执行脚本在同一目录下)
执行js一般有两种场景:
一种是在页面上直接执行JS
另一种是在某个已经定位的元素上执行JS
#coding=utf-8 from selenium import webdriver import time,os driver = webdriver.Firefox() file_path = 'file:///' + os.path.abspath('js.html') driver.get(file_path) #######通过JS 隐藏选中的元素######### #第一种方法: driver.execute_script('$("#tooltip").fadeOut();') time.sleep(5) #第二种方法: button = driver.find_element_by_class_name('btn') driver.execute_script('$(arguments[0]).fadeOut()',button) time.sleep(5) driver.quit()
js解释:
arguments对象,它是调用对象的一个特殊属性,用来引用Arguments对象。Arugments对象就像数组。
fadeOut() 方法使用淡出效果来隐藏被选元素,假如该元素是隐藏的。
PS:可以看到js 可以做selenium 做不到的事情,但是在什么样的自动化的时候才能(或必须)要js帮忙,我还没遇到过。不过js可以
selenium完成更强大的功能,这是不容置疑的。
另外,之前没有学过JS ,所以js代码很陌生。如果有时间的话也建议各位同学补充这方面的知识。UI自动化离不开前端技术。
相关文章推荐
- python之selenium调用js(execute_script)
- python之selenium调用js(execute_script)
- selenium python脚本调用java script 报Message: u'$ is not defined' ; Stacktrace 的解决历程
- python selenium --调用js
- python selenium 滚动条/调用JavaScript/js
- Selenium--调用js,对话框处理 (python)
- Selenium with Python 005 - 调用js操作页面元素
- Selenium2+python自动化17-JS处理滚动条+execute_script介绍
- selenium_webdriver(python)调用js脚本
- python selenium中调用执行js
- Webdriver (python)中调用JS
- .NET 调用JS:WebBrowser.Document.InvokeScript 方法抛出“指定的转换无效”异常的原因
- 服务端调用js:javax.script
- RobotFramework Selenium 中调用js和jquery
- 服务端调用js:javax.script
- JS跨域调用之JSONP--动态Script标签方式实现跨域
- matlab的plot调用函数不能用了,总出现错误:Attempt to execute SCRIPT plot as a function
- 在使用python+selenium时调用各种浏览器的dirver配置
- selenium_webdriver(python)下拉列表、下拉框和js弹窗警告处理
- Selenium_python 方法调用