python之selenium调用js(execute_script)

转载: http://www.cnblogs.com/fnng/p/3230768.html

本节重点:

调用js方法:execute_script(script, *args)

在当前窗口/框架 同步执行JavaScript

脚本:JavaScript的执行。

*参数:适用任何JavaScript脚本。

使用:driver.execute_script‘document.title’)

使快播登陆用户名输入框标红显示

[python]  view plain  copy
  1. #coding=utf-8  
  2. from selenium import webdriver  
  3. import time  
  4.   
  5. driver = webdriver.Firefox()  
  6. driver.get("http://passport.kuaibo.com/login/?referrer=http%3A%2F%2Fvod.kuaibo.com%2F%3Ft%3Dhome")  
  7.   
  8. #给用户名的输入框标红  
  9. js="var q=document.getElementById(\"user_name\");q.style.border=\"1px solid red\";"  
  10. #调用js  
  11. driver.execute_script(js)  
  12. time.sleep(3)  
  13.   
  14. driver.find_element_by_id("user_name").send_keys("username")  
  15. driver.find_element_by_id("user_pwd").send_keys("password")  
  16. driver.find_element_by_id("dl_an_submit").click()  
  17. time.sleep(3)  
  18.   
  19. driver.quit()  

js解释:

q=document.getElementById(\"user_name\")

元素qid user_name

q.style.border=\"1px solid red\

元素q的样式,边框为1个像素红色


隐藏元素

js.html

[html]  view plain  copy
  1. <html>  
  2.     <head>  
  3.       <meta http-equiv="content-type" content="text/html;charset=utf-8" />  
  4.       <title>jstitle>       
  5.       <script type="text/javascript" async="" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js">script>  
  6.       <link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" />          
  7.       <script type="text/javascript">  
  8.         $(document).ready(function(){  
  9.           $('#tooltip').tooltip({"placement": "right"});  
  10.         });  
  11.       script>  
  12.     head>  
  13.   
  14.     <body>  
  15.       <h3>jsh3>  
  16.       <div class="row-fluid">  
  17.         <div class="span6 well">          
  18.           <a id="tooltip" href="#" data-toggle="tooltip" title=" selenium-webdriver(python)">hover to see tooltipa>  
  19.           <a class="btn">Buttona>  
  20.         div>        
  21.       div>          
  22.     body>  
  23.     <script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js">script>  
  24.   html>  

( 保持 html 文件与执行脚本在同一目录下 )


执行js一般有两种场景:

  • 一种是在页面上直接执行JS
  • 另一种是在某个已经定位的元素上执行JS
[html]  view plain  copy
  1. #coding=utf-8  
  2. from selenium import webdriver   
  3. import time,os  
  4.   
  5. driver = webdriver.Firefox()  
  6. file_path =  'file:///' + os.path.abspath('js.html')  
  7. driver.get(file_path)  
  8.   
  9. #######通过JS 隐藏选中的元素#########  
  10. #第一种方法:  
  11. driver.execute_script('$("#tooltip").fadeOut();')  
  12. time.sleep(5)  
  13.   
  14. #第二种方法:  
  15. button = driver.find_element_by_class_name('btn')  
  16. driver.execute_script('$(arguments[0]).fadeOut()',button)  
  17. time.sleep(5)  
  18.   
  19. driver.quit()  


js解释:

arguments对象,它是调用对象的一个特殊属性,用来引用Arguments对象。Arugments对象就像数组

fadeOut() 方法使用淡出效果来隐藏被选元素,假如该元素是隐藏的。

PS:可以看到js 可以做selenium 做不到的事情,但是在什么样的自动化的时候才能(或必须)要js帮忙,我还没遇到过。不过js可以

selenium完成更强大的功能,这是不容置疑的。

另外,之前没有学过JS ,所以js代码很陌生。如果有时间的话也建议各位同学补充这方面的知识。UI自动化离不开前端技术。

你可能感兴趣的:(python)