转载: 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自动化离不开前端技术。

转载于:https://www.cnblogs.com/BigFishFly/p/6580709.html

python之selenium调用js(execute_script)相关推荐

  1. body click js 委托_自动化测试之selenium调用JS语句

    首先,我们来了解一下selenium调用JS语句的优缺点. 优点: 1.不受页面前端显示限制.(例如有一些页面元素需要鼠标悬停在某处,或者页面比较长,需要移动内嵌拖动条) 2.可以直接修改页面的参数( ...

  2. python selenium --调用js

    转自:http://www.cnblogs.com/fnng/p/3230768.html 本节重点: 调用js方法 execute_script(script, *args) 在当前窗口/框架 同步 ...

  3. selenium调用js文件_selenium肿么调用执行这两个js函数

    调用js方法 execute_script(script, *args) 在当前窗口/框架 同步执行javaScript 脚本:JavaScript的执行. *参数:适用任何JavaScript脚本. ...

  4. python调用js批量爆破账号密码

    python调用js批量爆破账号密码 前言 流程 爬取账号 爆破 参考文章 前言 在进行默认弱口令爆破的时候遇到了使用js对账号密码加密,而且加密算法写的比较复杂,如果用python重新写一个加密算法 ...

  5. 【避坑 超详细】Ubuntu使用python的selenium以及chrome模拟真实浏览器访问网页

    在Ubuntu系统上使用python的selenium,另外加上chrome和chromedriver,用于模拟浏览器访问网页. 下面教程在阿里云的Ubuntu 14.04 64位测试成功,其他lin ...

  6. Python+Selenium UI自动化 - 调用JS代码

    当webdriver遇到无法完成的操作时候,这个时候可以使用javascript来完成,webdriver提供了execute_script()接口来调用js代码. 执行js有两种场景: 1.在页面上 ...

  7. Python调用JS的四种方法

    Python调用JS的四种方法 1.PyExecJS 方法 1).安装PyExecJS 2). `PyExecJS 示例` 2.PyV8 方法 1).安装PyV8 2). `PyV8 示例` 3.js ...

  8. python 无头浏览器xhr 文件_Python对Selenium调用浏览器进行封装包括启用无头浏览器,及对应的浏览器配置文件...

    """ 获取浏览器 打开本地浏览器 打开远程浏览器 关闭浏览器 打开网址 最大化 最小化 标题 url 刷新 python对selenium封装浏览器调用 ------b ...

  9. python 无头浏览器_Python对Selenium调用浏览器进行封装包括启用无头浏览器,及对应的浏览器配置文件...

    """ 获取浏览器 打开本地浏览器 打开远程浏览器 关闭浏览器 打开网址 最大化 最小化 标题 url 刷新 Python对Selenium封装浏览器调用 ------b ...

最新文章

  1. 合肥工业大学—SQL Server数据库实验四:数据库的分离和附加
  2. java怎么自动提示关键词_Eclipse 实现关键字自动补全功能
  3. C# 操作 Database(Access SQL)
  4. 实验5:配置通过静态工厂方法创建的bean、实例工厂方法创建的bean、(FactoryBean测试)★
  5. 数据结构--百度百科
  6. Oracle 练习题 20131017
  7. 【论文研读】【医学图像分割】【FCN+RNN】Recurrent Neural Networks for Aortic Image Sequence Segmentation with ...
  8. 金山云肖江:5G推动智慧人居产业到达新高度
  9. Dart语言——45分钟快速入门(下)
  10. 本示例主要展示如何在XtraGrid网格控件(包含在DevExpress WinForms套包中)的主视图中指定HyperLinkEdit控件作为列编辑器...
  11. 如何根据自己需要截取字符串
  12. VueJS 组件参数名命名方式和前台显示
  13. Fundebug前端JavaScript插件更新至1.6.0,新增test()方法用于测试 1
  14. 华为开发者大会:Open API时代来临
  15. 计算机运算器的功能,计算机中运算器的主要功能
  16. C语言班级财务管理系统
  17. 升级云服务器的python3,导致宝塔面板打不开
  18. Ubuntu Xfce桌面系统设置项
  19. h5广告与html5,那些刷爆朋友圈儿的H5广告大揭秘
  20. OmniGraffle 7 Mac 注册码 账号:Appked 密码:MFWG-GHEB-HYTW-CGHT-CSXU-QCNC-SXU

热门文章

  1. k8s 服务发现:通过CoreDNS域名访问service服务
  2. Python3字符串复制
  3. MySQL服务启动及密码设置/配置远程访问
  4. 【软考-软件设计师】CPU的功能与组成
  5. redis持久化(2)
  6. 第一行代码学习笔记第七章——探究内容提供器
  7. int *ptr=(int *)(a+1)
  8. 最优化——线性规划总结1(线性规划标准型,规范型,顶点)
  9. 函数指针——typedef函数指针
  10. 常用的数据交换格式有哪些_大数据架构之数据交换平台