python之selenium调⽤js(execute_script)转载:
本节重点:
调⽤js⽅法
execute_script(script, *args)
在当前窗⼝/框架同步执⾏javaScriptjs arguments
脚本:JavaScript的执⾏。
*参数:适⽤任何JavaScript脚本。
使⽤:
使快播登陆⽤户名输⼊框标红显⽰:
#coding=utf-8
from selenium import webdriver
import time
driver = webdriver.Firefox()
<("passport.kuaibo/login/?referrer=http%3A%2F%2Fvod.kuaibo%2F%3Ft%3Dhome")
#给⽤户名的输⼊框标红
js="var ElementById(\"user_name\");q.style.border=\"1px solid red\";"
#调⽤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解释:
ElementById(\"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="leapis/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<link href="netdna.bootstrapcdn/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="netdna.bootstrapcdn/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')
<(file_path)
>##通过JS 隐藏选中的元素>####
#第⼀种⽅法:
time.sleep(5)
#第⼆种⽅法:
button = driver.find_element_by_class_name('btn')
time.sleep(5)
driver.quit()
js解释:
arguments对象,它是调⽤对象的⼀个特殊属性,⽤来引⽤Arguments对象。Arugments对象就像数组。
fadeOut() ⽅法使⽤淡出效果来隐藏被选元素,假如该元素是隐藏的。
PS:可以看到js 可以做selenium 做不到的事情,但是在什么样的⾃动化的时候才能(或必须)要js帮忙,我还没遇到过。不过js可以selenium完成更强⼤的功能,这是不容置疑的。
另外,之前没有学过JS ,所以js代码很陌⽣。如果有时间的话也建议各位同学补充这⽅⾯的知识。UI⾃动化离不开前端技术。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。

发表评论