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 輸入值,這個alert\confirm沒有對話框就不能用了,不然會報錯。
為了讓 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 登錄。