您的位置:首页 > 编程语言 > Python开发

python实例编写(4)--js,滚动条,cookie,验证码,获取特定属性的元素,实现原理

2015-12-14 10:14 886 查看
一.调用js

执行方法:execute_script(script,*args)

场景一:在页面上直接执行调用js

场景二:在定位的某个元素上执行调用js

如:掩藏文字(提示插件 tooltip设置淡入淡出)

dr.execute_script('$("#tooltip").fadeOut();')

隐藏按钮

btn=dr.find_element_by_id("button")

dr.execute_script('$(arguments[0]).fadeOut()',btn)

二.滚动条(使用js设置scrollTop)

#coding=utf-8
from selenium import webdriver
import time

#访问百度
driver=webdriver.Chrome()
driver.get("http://www.baidu.com")

#搜索
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
time.sleep(3)

#将页面滚动条拖到底部
js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)
time.sleep(3)

#将滚动条移动到页面的顶部
js="var q=document.documentElement.scrollTop=0"
driver.execute_script(js)
time.sleep(3)

driver.quit()


三.设置cookies

Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)。

#coding =utf-8
from selenium import webdriver

dr=webdriver.Chrome()
dr.get("http://www.youdao.com")

#向cookie的name和value添加会话信息,使用add_cookie({键值对})

dr.add_cookie({'name':'key-yuanyuan','value':'value-dongdong'})

#遍历cookies中的name和value信息,以及添加的信息
print "打印出所有的cookie"
for cookie in dr.get_cookies():
print "%s->%s"%(cookie['name'],cookie['value'])

#删除cookie的两种方式
#删除一个特定的cookie
print "删除cookieName后"
dr.delete_cookie("name")
for cookie in dr.get_cookies():
print "%s->%s"%(cookie['name'],cookie['value'])

#删除所有的cookie
print "删除所有cookie后"
dr.delete_all_cookies()

for cookie in dr.get_cookies():
print "%s->%s"%(cookie['name'],cookie['value'])


四.验证码

解决方法:1.在项目代码中注释掉 2.设置万能码 3.通过验证码识别技术 4.记录cookie (通过向浏览器添加cookie可以绕过登录的验证码)

如:#设置cookies

dr.add_cookie({'name':'username','value':'name'})
dr.add_cookie({'name':'password','value':'admin'})

五.获取特定属性的元素

webdriver不支持直接用某个元素的特殊属性,只能以遍历循环找出 attribute符合要求的 ,如:

inputs=dr.find_element_by_class_name("input")
for input in inputs:
if input.get_attrbute("data-node")=='111':
input.click() 


六.webdriver工作原理介绍:

1.webdriver通过脚本启动目标浏览器,并绑定到端口

2.客户端通过命令执行器发送http请求给服务器remote server的侦听端口 ,协议( webdriver wire protocal)

3.remote server依赖原生的浏览器执行command
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: