一.调用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