python selenium 怎么操作js代码

Python020

python selenium 怎么操作js代码,第1张

调用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代码,用python获取原始数据之后,模仿js编写相应的python代码。

二、通过接口api获得数据,直接使用python获取接口数据并处理。

三。终极方法。使用 Selenium和PhantomJS执行网页js代码,然后再获取数据,这种方法100%可以获取数据,确定就是速度太慢。

python取得javascript里面的值

复制代码代码如下:

import PyV8

with PyV8.JSContext() as env1:

env1.eval("""

var_i = 1

var_f = 1.0

var_s = "test"

var_b = true

""")

vars = env1.locals

var_i = vars.var_i

print var_i

javascript取得python里面的值

复制代码代码如下:

import PyV8

with PyV8.JSContext() as env1:

env1.securityToken = "foo"

env1.locals.prop = 3

print int(env1.eval("prop"))

python和javascript里面的函数交互

python调用javascript里面的函数python调用func就可以使用js里面的function函数了

复制代码代码如下:

import PyV8

with PyV8.JSContext() as ctxt:

func = ctxt.eval("""

(function ()

{

function a()

{

return "abc"

}

return a()

})

""")

print func()

这样也可以

复制代码代码如下:

import PyV8

with PyV8.JSContext() as ctxt:

func = ctxt.eval("""

function a()

{

return "abc"

}

function c()

{

return "abc"

}

""")

a = ctxt.locals.a

print a()