? ? ? ?看到大神們箕憾,都在做前端的自動化測試牡借,去快速高效的書寫測試腳本,節(jié)省人力厕九,物力蓖捶,提高效率地回,作為一個前端菜鳥 自然是羨慕不已扁远!于是決心也要深入學(xué)一下前端自動化測試,上網(wǎng)一找刻像,相關(guān)資料說多不多畅买,說少不少。于是開始學(xué)習(xí)之旅
1.selenium IDE
? ? ? 一款神器 细睡。能夠直接在火狐瀏覽器下快速地進行前端自動化測試谷羞,擁有自己的客戶端界面,操作也很簡單溜徙,看懂文字的 一般都會使用 這里附上大百度的安裝介紹湃缎,大家可以自己嘗試。(ps:有ide下載官網(wǎng)說 firefox版本要在v34.0左右的版本蠢壹,然后如今的firefox已經(jīng)更新到v53.0,找不到低版本firefox嗓违,不過我這里親測 高版本也能正常跑通,盡管放心M济场)
2.selenium webdriver
? ? ? ?人家大神都是走coding路線的蹂季,你拿個ide 不是顯的很low么冕广,對吧!而且ide也沒有coding測試全面偿洁,更加隨心所欲撒汉!可是大神們都是技多不壓身的主,又會python涕滋,又會java的睬辐!好在人家也給了node的api,讓我這樣的會的很少的何吝,也不至于餓死了溉委!下面就是node 版本的selenium webdriver的coding了!
1.找到咱們的大github爱榕,https://www.npmjs.com/package/selenium-webdriver ?
下載selenium-webdriver
? ? ? npm install selenium-webdriver ?-g
咱們?yōu)榱?以后測試的時候直接require進來就行瓣喊,所以加了-g,但是項目中使用 require('selenium-webdriver')?
但是有時候會無情的報錯出現(xiàn) Cannot find module 'selenium-webdriver'
(自己也被深深地坑了一道G帧)
原因 是你沒有配置環(huán)境變量NODE_PATH 所以自然會報錯咯
windows下就是 系統(tǒng)-》環(huán)境變量-》path 自己去添加吧(具體請自行百度T迦)
這里主要說下mac下咯(當然用mac啦,寫代碼這么苦逼跪者,還不對自己好點呀?妹薄)
在Linux下的node 項目同步到Mac OS X 下發(fā)現(xiàn)不能正常運行,全局包依賴沒有生效渣玲,
發(fā)現(xiàn)需要設(shè)置 NODE_PATH變量:
? ? ?export NODE_PATH=/usr/local/lib/node_modules
再次運行正常逗概。(好的 一勞永逸,以后-g安裝的 文件require都能引入到了M堋)?
2.開始編寫腳本 在firefox下測試
var webdriver = require('selenium-webdriver'),
? ? ? ?By = webdriver.By,
? ? ? ?until = webdriver.until;
var driver = new webdriver.Builder()
? ? ?.forBrowser('firefox')
? ? ?.build();
? ? ?driver.get('http://www.baidu.com');
? ? ?driver.findElement(By.id('kw')).sendKeys('selenium');
driver.findElement(By.id('su')).click();
driver.wait(until.titleIs('test_百度搜索'), 1000);
driver.quit();
愉快地node運行
題外話:如果出現(xiàn)static createSession(...args) {}? ? SyntaxError: Unexpected token ...
而你不知道...args ?是啥逾苫,建議 再學(xué)一下es6 ,而這個原因就是 你丫的不好好學(xué)習(xí) node 好久沒更新了枚钓,es6語法不識別了吧铅搓,要么你自己官網(wǎng)下載最新的node安裝覆蓋一下 要么就使用 npm update ?更新一下node ?不過這樣 只能祝你好運,因為npm更新node 真的好慢搀捷!而且你首先是翻墻的(哎星掰,我的大天朝啊D壑邸)
如果出現(xiàn):
The geckodriver executable could not be found on the current PATH. Please download the latest version from https://github.com/mozilla/geckodriver/releases/WebDriver and ensure it can be found on your PATH.
仔細一看 gecko不是firefox的內(nèi)核么氢烘!哦,這意思就是 你沒有安裝geckodriver驅(qū)動家厌,你怎么打開firefox播玖,沒辦法,乖乖地安裝
npm install -g geckodriver
然而 一坑不平 一坑又起 ?又出現(xiàn)
InvalidArgumentError: Could not convert 'text' to string
在driver.findElement(By.id('kw')).sendKeys()
欺負我讀書少像街, 這不是string類型是啥黎棠,百般嘗試晋渺,new String('selenium') ?也不行,看github上的request 上老外也遇到這個問題脓斩,而且還沒有解決木西,自己就心滿意足的,但是不能就這么放著不解決呀随静!然而在chrome里面是正常的八千,這里大膽的預(yù)測可能是因為firefox的版本過高有關(guān)!
所以我們這么解決
將driver.findElement(By.id('kw')).sendKeys('selenium')換成
var longstring = "test";
inputField = driver.findElement(webdriver.By.id('kw'));
driver.executeScript("arguments[0].setAttribute('value', '" + longstring +"')", inputField);
成功跑通燎猛。不過跑通firefox不行恋捆,咱們還有chrome
3.開始編寫腳本 在chrome下測試
? 估計大家已經(jīng)想到 對了只需要下載
npm install chromedriver -g
var webdriver = require('selenium-webdriver'),
By = webdriver.By,
until = webdriver.until;
var driver = new webdriver.Builder()
.forBrowser('chrome')
.build();
driver.get('http://www.baidu.com');
var longstring = "test",
driver.findElement(By.id('kw')).sendKeys(longstring);//正常使用
driver.findElement(By.id('su')).click();
driver.wait(until.titleIs('test_百度搜索'), 1000);
driver.quit();
需要注意的是
session not created exception: Chrome version must be >= 56.0.2884.0
沒有的話,你就趕緊官網(wǎng)更新chrome吧?
好了重绷!
api:webdriver api文檔? ? 祝大家幸福沸停!
以后的擴展操作就靠你自己了 node的語法忘了,就再看看node吧昭卓!
至于ie嘛愤钾,目前沒有test,希望有研究的朋友候醒,也可以留言給我能颁,我好好學(xué)習(xí)一下!