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

本节重点:

调用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自动化离不开前端技术。

最新文章

  1. 夺命雷公狗-----React---14--移入移出事件
  2. (三)SQL入门 数据库规格化简介
  3. 插入视频(youtube)
  4. myBatis自动生成mapping,dao和model
  5. 解决安装office2013时提示已安装相同版本的office
  6. 用一个下午从零开始搭建一个基础lbs查询服务
  7. Android计算时间差
  8. mybatis中:returned more than one row, where no more than one was expected.异常
  9. NFS参数配置详细说明
  10. Python系统调用——运行其他程序
  11. openstack windows 2008 img
  12. 【QT相关】文件、目录基础操作
  13. 【Android】属性动画
  14. HDU 1814 Peaceful Commission / HIT 1917 Peaceful Commission /CJOJ 1288 和平委员会(2-sat模板题)
  15. 8.23.3 IO-转换流的作用
  16. SVG文本
  17. Mysql索引分析:适合建索引?不适合建索引?【转】
  18. 集成 solr6.5.1到 tomcat7(8) 中 (解决java.lang.NoSuchMethodError问题)
  19. 【转】Linux的nm查看动态库和静态库的符号
  20. Java数据库操作(MySQL与SQLserver)

热门文章

  1. I.MX6 GPS Android HAL Framework 调试
  2. Yii在window下的安装方法
  3. elasticsearch的插件安装
  4. i2c接口笔记
  5. sourcegraph 方便的代码查看工具
  6. 【linux】linux文件属性权限的介绍
  7. Bootstrap-CL:徽章
  8. 20181124_webAPI基础01_创建一个基础的WebAPI项目
  9. KVC &amp; KVO 入门
  10. .NET 同步 异步 委托