1.多表单切换:
2.多窗口切换:switch_to_window()方法可以切换到任意的窗口。
例:
browser= webdriver.Firefox()
browser.implicitly_wait(10)
browser.get("https://www.baidu.com/")
#获得百度搜索窗口句柄
search = browser.current_window_handle
browser.find_element_by_xpath("//*[@id='u1']/a[7]").click()
#获得当前打开所有窗口句柄
all_handles = browser.window_handles
#进入注册窗口
for handle in all_handles:
if handle!=search:
browser.switch_to_window(handle)
print 'now register window'
browser.find_element_by_id("TANGRAM__PSP_8__userName").send_keys("username")
browser.find_element_by_id("TANGRAM__PSP_8__password").send_keys("password")
browser.find_element_by_id("TANGRAM__PSP_8__submit").click()
#进入搜索窗口
elif handle ==search:
browser.switch_to_window(handle)
print 'now search window'
browser.find_element_by_id("TANGRAM__PSP_2__closeBtn").click()
browser.find_element_by_id("kw").send_keys("test")
browser.find_element_by_id("su").click()
time.sleep(3)
3.警告框处理:
accept 点击确认按钮。
dismiss 点击取消按钮,如果有的话。
send_keys 输入值,这个alertconfirm没有对话框就不能用了,不然会报错。
为了让 FireFox 让浏览器能实现文件的载,我们需要通过 FirefoxProfile() 对其参数做一个设置。
browser.download.folderList设置成 0 代表下载到浏览器默认下载路径;设置成 2 则可以保存到指定目录。
browser.download.manager.showWhenStarting是否显示开始,Ture 为显示,Flase 为不显示。
browser.download.dir 用于指定你所下载文件的目录。os.getcwd() 该函数不需要传递参数,用于返回当前的目录。
browser.helperApps.neverAsk.saveToDisk指定要下载页面的 Content-type 值,“application/octet-stream”为文件的类型。HTTP Content-type 常 用对照表:http://tool.oschina.net/commons
这些参数的设置可以通过在 Firefox 浏览器地址栏输入:about:config 进行设置
#coding=utf-8
from selenium import webdriver
import os
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList",2)
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.download.dir", os.getcwd())
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream")
#下载文件的类型
driver = webdriver.Firefox(firefox_profile=fp)
driver.get("http://pypi.Python.org/pypi/selenium")
driver.find_element_by_partial_link_text("selenium-2").click()
-
get_cookies() 获得所有cookie信息
-
get_cookie(name) 返回有特定 name 值有 cookie 信息
-
add_cookie(cookie_dict) 添加 cookie,必须有 name 和 value 值
-
delete_cookie(name) 删除特定(部分)的cookie信息 删除所有cookie信息
-
delete_all_cookies() 下面通过 get_cookies()来获取当前浏览器的 cookie 信息
cookie = driver.get_cookies()
driver.add_cookie({'name':'11111','value':'22222'})
print cookie
for cookie in driver.get_cookies():
print "%s ->%s" % (cookie['name'],cookie['value'])
WebDriver提供了execute_script()方法 来执行 JavaScript 代码
#将页面滚动条拖到底部
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.get_screenshot_as_file("D:\baidu_error.jpg")
close()和qiut()
9.验证码处理:
1)去掉验证码:
2)设置万能码:
import random
#生成一个 1000 到 9999 之间的随机整数
verify = random.randint(1000,9999)
print u"生成的随机数:%d " %verify
number = input(u"请输入随机数:")
print number
if number == verify:
print u"登录成功!!"
elif number == 132741:
print u"登录成功!!"
else:
print u"验证码输入有误!"
3)验证码识别技术:
4)记录cookie:
可以通过 add_cookie()方法将用户名密码写入浏览器 cookie ,再次访问网站时服务器直接读取浏览器 Cookie 登录。