自己開始一個腳本開始學習:
# coding = utf-8 from selenium import webdriver browser = webdriver.Firefox() browser.get("http://www.baidu.com") browser.find_element_by_id("kw").send_keys("selenium") browser.find_element_by_id("su").click() browser.quit()
腳本實現打開百度瀏覽器,輸入seleniu查詢字段,點擊“百度一下”按鈕,退出瀏覽器。
browser = webdriver.Firefox()
使用的火狐瀏覽器,當前也可以使用其他的。
browser.get("http://www.baidu.com")
獲取地址
browser.find_element_by_id("kw").send_keys("selenium")
百度查詢輸入框對應的代碼如下所示:
<input id="kw" class="s_ipt" type="text" maxlength="100" name="wd" autocomplete="off">
一個控件有若干屬性id 、name等,百度輸入框的id 叫kw ,因此取的id值。
browser.find_element_by_id("su").click()
百度的查詢按鈕代碼如下所示:
<input id="su" class="bg s_btn" type="submit" onmouseout="this.className='bg s_btn'" onmousedown="this.className='bg s_btn s_btn_h'" value="百度一下">
查詢按鈕id為su,行為為click()
關閉瀏覽器
browser.quit()
不僅關閉窗口,還會徹底的退出webdriver,釋放與driver server之間的連接。
close方法關閉當前的瀏覽器窗口。簡單來說quit是更加徹底的close,quit會更好的釋放資源,適合強迫症和完美主義者。
添加休眠時間
通過增加休眠時間,減慢操作過程。
# coding = utf-8 from selenium import webdriver import time browser = webdriver.Firefox() browser.get("http://www.baidu.com") time.sleep(0.3) #sleep 0.3s browser.find_element_by_id("kw").send_keys("selenium") browser.find_element_by_id("su").click() time.sleep(3) #sleep 3s browser.quit()
time.sleep() 函數可以在任意位置使用。它主要用於由於網絡原因或頁面加載慢的情況下,更能增實的模擬用戶的行為。如查詢時輸入selenium,搜索按鈕還沒有加載出來,那腳本就會報錯,如果在適合的位置增加了休眠時間就有助於減少網絡原因造成的腳本執行失敗。
打印title與URL
# coding = utf-8 from selenium import webdriver import time browser = webdriver.Firefox() browser.get("http://www.baidu.com") time.sleep(0.3) #sleep 0.3s browser.find_element_by_id("kw").send_keys("selenium") browser.find_element_by_id("su").click() time.sleep(1) #sleep 3s print browser.title #把title頁面打印出來 browser.quit()
直接執行可以看出打印結果:
>>> selenium_百度搜索
訪問URL
web UI測試里最簡單也是最基本的事情就是訪問1個鏈接了。在python的webdrive中,訪問url時應該使用get方法。
#coding=utf-8 from selenium import webdriver import time browser = webdriver.Firefox() #訪問百度首頁 first_url= 'http://www.baidu.com' print "now access %s" %(first_url) browser.get(first_url) time.sleep(2) browser.quit()
將瀏覽器最大化
實際腳本在執行過程中並非是最大化的,而當我們在測試中使用一些基於圖像和坐標的輔助測試工具時,我們就會需要使瀏覽器在每次測試時保存最大化,以便在同一分辨率下進行圖像比對和坐標點選。
舉例來說,如果在webdriver測試中使用了sikuli來對flash插件進行操作的話,把瀏覽器最大化無疑是一個比較簡單的保證分辨率統一的解決方案。
# coding = utf-8 from selenium import webdriver import time browser = webdriver.Firefox() browser.get("http://www.baidu.com") time.sleep(0.3) #sleep 0.3s print "瀏覽器最大化" browser.maximize_window() #將瀏覽器最大化顯示 browser.find_element_by_id("kw").send_keys("selenium") time.sleep(1) #sleep 1s browser.find_element_by_id("su").click() browser.quit()
設置瀏覽器大小
設置瀏覽器窗口的大小有下面兩個比較常見的用途:
-
在統一的瀏覽器大小下運行用例,可以比較容易的跟一些基於圖像比對的工具進行結合,提升測試的靈活性及普遍適用性。比如可以跟sikuli結合,使用sikuli操作flash;
-
在不同的瀏覽器大小下訪問測試站點,對測試頁面截圖並保存,然后觀察或使用圖像比對工具對被測頁面的前端樣式進行評測。比如可以將瀏覽器設置成移動端大小(320x480),然后訪問移動站點,對其樣式進行評估;
# coding = utf-8 from selenium import webdriver import time browser = webdriver.Firefox() browser.get("http://www.baidu.com") time.sleep(0.3) #sleep 0.3s print "瀏覽器寬480,高800" browser.set_window_size(480,800) #設置大小 browser.find_element_by_id("kw").send_keys("selenium") time.sleep(1) #sleep 1s browser.find_element_by_id("su").click() browser.quit()
webdriver提供了很多調整瀏覽器窗口的接口,比如set_window_position(設置或獲取瀏覽器的位置)。在一般情況下這些功能並不常用。
瀏覽器前進與后退功能
瀏覽器上有一個后退、前進按鈕,對於瀏覽網頁的人是比較方便的;對於做web自動化測試的來說應該算是一個比較難模擬的問題;其實很簡單,下面看看python的實現方式
#coding=utf-8 from selenium import webdriver import time import os if "HTTP_PROXY" in os.environ:del os.environ['HTTP_PROXY'] browser = webdriver.Firefox() #訪問百度首頁 first_url= 'http://www.baidu.com' print "now access %s" %(first_url) browser.get(first_url) time.sleep(2) #訪問新聞頁面 second_url='http://news.baidu.com' print "now access %s" %(second_url) browser.get(second_url) time.sleep(2) #返回(后退)到百度首頁 print "back to %s "%(first_url) browser.back() time.sleep(1) #前進到新聞頁 print "forward to %s"%(second_url) browser.forward() time.sleep(2) browser.quit()
if "HTTP_PROXY" in os.environ:del os.environ['HTTP_PROXY'] 這行加不加都成。
說實話,這兩個功能一般不太常用。所能想到的場景大概也就是在幾個頁面間來回跳轉,省去每次都get url。