參考文檔:WebDriver官方文檔,下載鏈接:http://download.csdn.net/detail/kwgkwg001/4004500
蟲師:《selenium2自動化測試實戰-基於python語言》
一、控制瀏覽器
webdriver主要提供操作頁面上各種元素的方法,但它也提供操作瀏覽器的一些方法,例如控制瀏覽器大小、前進和后退等。
1、控制瀏覽器窗口大小
1 # 控制瀏覽器大小 2 from selenium import webdriver 3 driver = webdriver.Chrome("安裝工具\python\chromedriver.exe") 4 driver.get("http://www.baidu.com") 5 # 參數數字為像素點 6 print("設置瀏覽器寬480、高800顯示") 7 driver.set_window_size(480,800)
2、全屏顯示
webdriver提供了maximize_window()方法使打開的瀏覽器全屏顯示,其用法與set_window_size()相同。
3、控制瀏覽器前進、后退
現在的瀏覽器在瀏覽網頁時都提供了前進和后退功能,webdriver也提供了對應的forward()和back()方法,來模擬前進和后退按鈕:
1 # 控制瀏覽器前進、后退 2 from selenium import webdriver 3 driver = webdriver.Chrome("安裝工具\python\chromedriver.exe") 4 # 訪問百度首頁 5 first_url='http://www.baidu.com'' 6 print("now access %s "%(first_url)) 7 driver.get(first_url) 8 # 訪問新聞頁面 9 second_url='http://www.news.baidu.com' 10 print("now access % s "%(second_url)") 11 driver.get("second_url") 12 # 后退到百度首頁 13 print("back to %s "%(first_url)") 14 driver.back() 15 # 前進到新聞頁 16 print("forward to %s "%(second_url)") 17 driver.forward()
為了看清腳本執行過程,每一步的操作都通過print()打印當前的URL地址,執行結果如下:
now access http://www.baidu.com
now access http://news.baidu.com
back to http://www.baidu.com
froward to http://news.baidu.com
4、模擬瀏覽器前刷新
一般我們刷新頁面都是通過F5或者頁面上的刷新按鈕,webdriver也提供了刷新方法refresh(),用來模擬頁面刷新:
......
# 刷新當前頁面
driver.refresh()
......
二、鼠標事件
在webelement接口提供的方法中,可以通過click()來模擬鼠標單擊操作,但實際上鼠標交互方式很多,例如:右擊、懸停、鼠標拖動等功能;
webdriver提供了ActionChains類,封裝了鼠標操作的常用方法:
perform():執行所有的ActionChains中存儲的行為
context_click():鼠標右擊
double_click():鼠標雙擊
drag_and_drop():鼠標拖動
move_to_element():鼠標懸停
1、鼠標右擊操作
1 # 鼠標右擊操作 2 from selenium import webdriver 3 from selenium.webdriver.common.action_chains import ActionChains 4 driver = webdriver.Chrome("安裝工具\python\chromedriver.exe") 5 driver.get("http://www.baidu.com") 6 # 定位到要右擊的元素 7 right_click = driver.find_element_by_id("KW") 8 # 對定位到的元素執行鼠標右擊操作 9 ActionChains(driver).context_click(right_click).perform() 10 ...
2、鼠標懸停
鼠標懸停彈出下拉菜單也是一個十分常見的功能設計,move_to_element()方法可以模擬鼠標懸停動作,其用法與context_click()相同;
1 # 鼠標懸停 2 ... 3 above = driver.find_element_by_id("id") 4 ActionChains(driver).move_to_element(above).perform() 5 ...
3、鼠標雙擊操作
double_click()方法用於模擬鼠標雙擊操作;
1 # 鼠標雙擊操作 2 ... 3 double_click = driver.find_element_by_id("id") 4 ActionChains(driver).double_click(double_click).perform() 5 ...
4、鼠標拖放操作
drag_and_drop(source,target)在源元素上按住鼠標左鍵,然后移動到目標元素上釋放;
source:鼠標拖動的源元素
target:鼠標釋放的目標元素
1 # 定位元素的位置 2 ... 3 element = driver.find_element_by_id("id") 4 # 定位元素要移動到的目標位置 5 target = driver.find_element_by_id("xx") 6 # 執行元素的拖放操作 7 ActionChains(driver).drag_and_drop(element,target).perform() 8 ...
三、鍵盤事件
Keys()類提供了鍵盤上幾乎所有的按鍵方法,send_keys()不見可以模擬鍵盤輸入,還可以用來輸入鍵盤上的按鍵,甚至是組合鍵,例子如下:
1 # 模擬鍵盤事件 2 from selenium import webdriver 3 # 引入keys模塊 4 from selenium.webdriver.common.keys import Keys 5 driver = webdriver.Chrome("安裝工具\python\chromedriver.exe") 6 driver.get("http://www.baidu.com") 7 # 輸入框輸入內容 8 driver.find_element_by_id("kw").send_keys("selenium") 9 # 輸入“教程” 10 driver.find_element_by_id("kw").send_keys("教程") 11 # 刪除“教程” 12 driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE) 13 ...
以下為常用的鍵盤操作:
1 # 常用的鍵盤操作 2 send_keys(Keys.BACK_SPACE) 3 send_keys(Keys.SPACE) 4 send_keys(Keys.TAB) 5 send_keys(Keys.ESCAPE) 6 send_keys(Keys.ENTER) 7 send_keys(Keys.CONTROL,'a') 8 send_keys(Keys.CONTROL,'c') 9 send_keys(Keys.CONTROL,'v') 10 send_keys(Keys.CONTROL,'x') 11 send_keys(Keys.F1) 12 ... 13 send_keys(Keys.F12)
以上為webdriver的控制瀏覽器操作以及模擬鍵盤、鼠標操作的常用方法,當然具體在實際使用過程中,還需要結合實際的業務場景,靈活運用!