python selenium --调用js

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

时间: 2024-12-24 16:31:29

python selenium --调用js的相关文章

Python selenium的js扩展实现

python写的数据采集,对一般有规律的页面用 urllib2 + BeautifulSoup + 正则就可以搞定. 但是有些页面的内容是通过js生成,或者通过js跳转的,甚至js中还加入几道混淆机制:对这种涉及页面脚本解析的内容,前面的方式便很无力. 这时我们需要能解析.运行js的引擎——浏览器,而python selenium能提供程序与浏览器的交互接口,再加上phantomjs这个可以后台运行的浏览器,即使用 selenium + phantomjs 便可以解决以上的问题. seleniu

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') 使快播登陆用户名输入框标红显示: #coding=utf-8 from selenium import

Python代码调用JS函数

采集过程中,遇到了一个token是经过JS加密生成的,于是乎进行JS断点追踪,生成了完整的生成token值的JS函数文件. 这个JS函数需要在Python代码中调用,通过输入一个参数,然后会输出一个token值. 所需模块: pip install pyexecjs 注意:这里安装的模块叫:pyexecjs, 但是调用的时候的名字是:execjs 具体调用步骤: # -*- coding: utf-8 -*- import execjs def get_js(): # f = open("./.

python+selenium调用JavaScript

有些浏览器的页面操作,不能依靠WebDriver提供的API来操作,需要借助JavaScript脚本. webdriver提供了execute_script()方法来执行JavaScript代码. from selenium import webdriver import time driver = webdriver.Firefox() driver.get('http://www.baidu.com') driver.set_window_size(800,700) #设置浏览器的宽和高,以

python selenium 处理JS弹出对话框(六)

在实际系统中,在完成某些操作时会弹出对话框来提示,主要分为"警告消息框","确认消息框","提示消息对话"三种类型的对话框. 1.警告消息框(alert) 警告消息框提供了一个"确定"按钮让用户关闭该消息框,并且该消息框是模式对话框,也就是说用户必须先关闭该消息框然后才能继续进行操作. 2.确认消息框(confirm) 确认消息框向用户提示一个"是与否"问题,用户可以根据选择"确定"按钮

selenium 调用JS操作滚动条(java)来解决element not clickable的问题

今天在运行自动化用例的时候,发现总是某个元素提示not  clickable.分析原因有可能是页面右下角那个大大的top图标,刚好挡住了我要点击的元素.要解决就得拉动页面,就需要操作页面上的滚动条. 使用了一个比较简单的方法,在这里记录下来: JavascriptExecutor JS=(JavascriptExecutor) driver; String high="scroll(0,10000);";//滚动到Y值10000像素的位置,一般10000就到页面的底部了,可以根据自己需

Selenium Python浏览器调用:伪浏览器

WebDriver驱动介绍 因为移动端的driver目前没有接触,所以主要介绍PC端driver,PC端的driver都是基于浏览器的,主要分为2种类型: 一种是真实的浏览器driver:safari.firefox.ie.chrome等 比如:safari.firefox.ie.chrome都是通过浏览器原生组件来调用浏览器的原生API,这些driver都是直接启动并通过调用浏览器的底层接口来驱动浏览器的,因此具有最真实的用户场景模拟,主要用于进行web的兼容性测试使用. 一种是伪浏览器dri

selenium处理富文本框,日历控件等 调用JS修改value值

http://blog.csdn.net/fudax/article/details/8089404 document.getElementById("js_domestic_fromdate").value = "2014-10-10" selenium处理富文本框,日历控件等 调用JS修改value值,布布扣,bubuko.com

selenium 代理 Cookies 截图 等待 调用JS

改变用户代理 读取Cookies 调用Java Script Webdriver截图 页面等待 1. 改变用户代理 [java] view plain copy import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver;