Selenium:瀏覽器及鼠標、鍵盤事件


參考文檔: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的控制瀏覽器操作以及模擬鍵盤、鼠標操作的常用方法,當然具體在實際使用過程中,還需要結合實際的業務場景,靈活運用!

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM