安裝selenium
打開命令控制符輸入:pip install -U selenium
火狐瀏覽器安裝firebug:www.firebug.com,調(diào)試所有網(wǎng)站語言,調(diào)試功能
Selenium IDE 是嵌入到Firefox 瀏覽器中的一個(gè)插件,實(shí)現(xiàn)簡單的瀏覽器操 作的錄制與回放功能,IDE 錄制的腳本可以可以轉(zhuǎn)換成多種語言,從而幫助我們快速的開發(fā)腳本,下載地址:https://addons.mozilla.org/en-US/firefox/addon/selenium-ide/
如何使用IDE錄制腳本:點(diǎn)擊seleniumIDE——點(diǎn)擊錄制——開始錄制——錄制完成后點(diǎn)擊文件Export Test Case——python/unittest/Webdriver——保存;
安裝python
安裝的時(shí)候,推薦選擇“Add exe to path”,將會自動添加Python的程序到環(huán)境變量中。然后可以在命令行輸入 python -V 檢測安裝的Python版本。
瀏覽器內(nèi)殼:IE、chrome、FireFox、Safari
1、webdriver:用unittest框架寫自動化用例(setUp:前置條件,tearDown清場)
1 import unittest
2 from selenium import webdriver
3
4 class Ranzhi(unittest.TestCase):
5 def setUp(self):
6 self.driver = webdriver.Firefox() #選擇火狐瀏覽器
7 def test_ranzhi(self):
8 pass
9 def tearDown(self):
10 self.driver.quit()#退出瀏覽器
2、斷言,檢查跳轉(zhuǎn)的網(wǎng)頁是否和實(shí)際一致
斷言網(wǎng)址時(shí)需注意是否為偽靜態(tài)(PATH_INFO)或者GET,前者采用路徑傳參數(shù)(sys/user-creat.html),后者通過字符查詢傳參數(shù)(sys/index.php?m=user&f=index)
當(dāng)采用不同方式校驗(yàn)網(wǎng)址會發(fā)現(xiàn)變化。
1 self.assertEqual("http://localhost:8080/ranzhi/www/s/index.php?m=index&f=index",
2 self.driver.current_url, "登錄跳轉(zhuǎn)失敗")
3、定位元素,在html里面,元素具有各種各樣的屬性。我們可以通過這樣區(qū)別其他元素的屬性來定位到這個(gè)元素.
WebDriver提供了一系列的元素定位方法。常見的有以下幾種:id,name,link text,partial link text,xpath,css seletor,class,tag.
1 self.driver.find_element_by_xpath('//*[@id="s-menu-superadmin"]/button').click()
2 self.driver.find_element_by_id('account').send_keys('admin')
3 self.driver.find_element_by_link_text(u'退出').click()
定位元素需注意的問題:
a.時(shí)間不夠,采用兩種方式(self.implicitly_wait(30),sleep(2))
b.函數(shù)嵌套(<iframe></iframe>)
1 # 進(jìn)入嵌套
2 self.driver.switch_to.frame('iframe-superadmin')
3 #退出嵌套
4 self.driver.switch_to.default_content()
c.flash,驗(yàn)證碼(關(guān)閉驗(yàn)證碼或使用碼)
d.xpath問題:好采用簡xpath,當(dāng)xpath中出現(xiàn)li[10]等時(shí)需注意,有時(shí)頁面定位會出現(xiàn)問題
4、采用CSV存數(shù)據(jù)
CSV:以純文本形式存儲表格數(shù)據(jù)(數(shù)字和文本),CSV文件由任意數(shù)目的記錄組成,記錄間以某種換行符分隔;每條記錄由字段組成,字段間的分隔符是其它字符或字符串,常見的是逗號或制表符。大量程序都支持某種CSV變體,至少是作為一種可選擇的輸入/輸出格式。
1 melody101,melody101,m,1,3,123456,@qq.com
2 melody102,melody101,f,2,5,123456,@qq.com
3 melody103,melody101,m,3,2,123456,@qq.com
1 import csv
2 # 讀取CSV文件到user_list字典類型變量中
3 user_list = csv.reader(open("list_to_user.csv", "r"))
4 # 遍歷整個(gè)user_list
5 for user in user_list:
6 sleep(2)
7 self.logn_in('admin', 'admin')
8 sleep(2)
9 # 讀取一行csv,并分別賦值到user_to_add 中
10 user_to_add = {'account': user[0],
11 'realname': user[1],
12 'gender': user[2],
13 'dept': user[3],
14 'role': user[4],
15 'password': user[5],
16 'email': user[0] + user[6]}
17 self.add_user(user_to_add)