Node.js結(jié)合selenium做web自動(dòng)化測(cè)試第十課

Hi,親愛(ài)的小伙伴們玩讳,新的一周開(kāi)始了涩蜘,不要有起床氣和周一綜合癥嚼贡,好好學(xué)習(xí),天天快樂(lè)同诫!

下面開(kāi)始我們第十課粤策,本期的主要內(nèi)容是使用chrome模擬手機(jī)瀏覽器,在此之前误窖,先介紹一下幾個(gè)瀏覽器行為操作叮盘,瀏覽器還有行為?都有啥呢霹俺,就是前進(jìn)熊户,后退,刷新吭服,最大化等等嚷堡,元芳,你怎么看艇棕?我蝌戒,我去官網(wǎng)API上看
是這個(gè)方法了,行為操作里面有這些個(gè)

back是回退沼琉,forward是前進(jìn)北苟,refresh是刷新,to(url)是進(jìn)入url地址打瘪,代碼再實(shí)現(xiàn)一下


Given(/^進(jìn)入網(wǎng)站"([^"]*)"$/, async function (url) {

    await driver.get(url)
});

When(/^點(diǎn)擊新聞鏈接友鼻,進(jìn)入新聞頁(yè)$/, async function () {

    await driver.findElement({linkText:'新聞'}).click()
});

Then(/^后退$/, async function () {

    await driver.navigate().back()
});

Then(/^前進(jìn)$/, async function () {

    await driver.navigate().forward()
});

Then(/^刷新$/, async function () {

    await driver.navigate().refresh()
});

經(jīng)過(guò)這么多節(jié)課程,這段代碼對(duì)于大家來(lái)說(shuō)已經(jīng)小菜一碟了吧闺骚,明顯不用解釋彩扔,大家運(yùn)行上面這一段的時(shí)候有沒(méi)有發(fā)現(xiàn)瀏覽器沒(méi)有開(kāi)到窗口最大化,強(qiáng)迫癥患者不用說(shuō)了僻爽,肯定覺(jué)得不舒服虫碉,看起來(lái)不美觀是一方面,在某些場(chǎng)景中胸梆,窗口沒(méi)有最大化可能會(huì)導(dǎo)致界面的一些元素定位顯示不全而定位不到敦捧,所以,除了會(huì)前進(jìn)后退刷新以外碰镜,窗口最大化操作也是我們必備的技能

我們要找的瀏覽器窗口最大化
這里大家在看API的時(shí)候注意一下兢卵,selenium更新最新版后,最小化绪颖,全屏等一些操作不見(jiàn)了秽荤,API里看到的一些函數(shù)如果大家嘗試的時(shí)候報(bào)錯(cuò)了,不要懷疑是自己的代碼有問(wèn)題,沒(méi)錯(cuò)王滤,你們很棒!只是方法更新了滓鸠,但是這個(gè)最大化的函數(shù)還保留著也是最常見(jiàn)的雁乡,可以繼續(xù)放心使用的,添加一個(gè)步驟

先別往下看糜俗,大家試試按API上的寫(xiě)法實(shí)現(xiàn)一下代碼


下面我公布答案踱稍,看看寫(xiě)對(duì)了沒(méi)有

Then(/^瀏覽器窗口最大化$/, async function () {

    await driver.manage().window().maximize()
});

我們的工具里都會(huì)有代碼提示功能,所以在調(diào)用manage().window()方法的時(shí)候你會(huì)看到有很多操作悠抹,如獲取坐標(biāo)getPositon()珠月,獲取大小getSize()這一系列數(shù)不清的操作,可以充分滿足你的好奇心,好奇就大膽的嘗試,盡情的抱著代碼向前沖栽烂,勝利就會(huì)向你招手的

API里面好多干貨爆阶,比如說(shuō)下面這個(gè),設(shè)置無(wú)頭瀏覽器headless()
無(wú)頭不是恐怖片题禀,不要被嚇跑,無(wú)頭的意思呢,說(shuō)的炫酷一點(diǎn)伙判,就是瀏覽器會(huì)隱身了,執(zhí)行的過(guò)程中神不知鬼不覺(jué)黑忱,你看不到瀏覽器打開(kāi)和它點(diǎn)擊頁(yè)面元素的一系列操作但它確實(shí)從頭到尾按你的要求執(zhí)行了宴抚,光說(shuō)不做有吹牛的嫌疑,當(dāng)然得寫(xiě)代碼運(yùn)行啦
let chrome = require('selenium-webdriver/chrome')
let { Builder } = require('selenium-webdriver')
require('chromedriver')
let driver = new Builder()
    .forBrowser('chrome')
    .setChromeOptions(new chrome.Options().headless())
    .build();
(async function example() {
    await driver.get('https://www.baidu.com')
})()

這一段大家寫(xiě)了進(jìn)行試甫煞,從頭到尾都見(jiàn)不著瀏覽器打開(kāi)菇曲,只有個(gè)運(yùn)行結(jié)果

神奇吧,炫酷吧抚吠,不過(guò)大家肯定會(huì)懷疑是不是沒(méi)有操作啊羊娃,也是,子曾經(jīng)好像曰過(guò)埃跷,眼見(jiàn)的也不一定為實(shí)蕊玷。更何況咱們這啥也沒(méi)見(jiàn)著呢,這個(gè)好辦弥雹,在操作的最后加一個(gè)屏幕截圖垃帅,跟蹤一下,讓它現(xiàn)原形

let chrome = require('selenium-webdriver/chrome')
let { Builder } = require('selenium-webdriver')
require('chromedriver')
const fs=require('fs')
let driver = new Builder()
    .forBrowser('chrome')
    .setChromeOptions(new chrome.Options().headless())
    .build();
(async function example() {
    await driver.get('https://www.baidu.com')
    let imagedata=await driver.takeScreenshot()//執(zhí)行截圖操作剪勿,并將截圖數(shù)據(jù)定義給變量imagedata
    fs.writeFileSync(__dirname+'/image.png',imagedata,'base64')//將截圖保存為圖片贸诚,其中_dirname是當(dāng)前目錄,
    ///image.png為圖片的命名,imagedata是剛剛的截圖數(shù)據(jù)酱固,'base64'是圖片的編碼格式
})()

運(yùn)行以后械念,可以看到目錄下多了一個(gè)圖片文件,名字是剛剛定義的那個(gè)

打開(kāi)就能看到這個(gè)圖运悲,也是剛才讓它執(zhí)行的操作龄减,看來(lái)無(wú)頭瀏覽器沒(méi)騙人,就是會(huì)隱身操作班眯,有了無(wú)頭瀏覽器希停,再也不用擔(dān)心跑代碼會(huì)占用CUP,會(huì)隱身的瀏覽器,你的CPU值得擁有署隘!

接下來(lái)該說(shuō)什么來(lái)著宠能,哦對(duì)了,chrome模擬手機(jī)瀏覽器磁餐,我們先來(lái)看一下node_modules里面的selenium-webdriver文件夾下example里的文件
這里講的就是模擬手機(jī)瀏覽器需要的東西

根據(jù)這個(gè)格式违崇,實(shí)現(xiàn)出來(lái)代碼

let chrome = require('selenium-webdriver/chrome')
let { Builder } = require('selenium-webdriver')
const {Options} = require('selenium-webdriver/chrome');
require('chromedriver')
const fs=require('fs')
let driver = new Builder()
    .forBrowser('chrome')
    //.setChromeOptions(new chrome.Options().headless())
    .setChromeOptions(new Options().setMobileEmulation({deviceName: 'Nexus 5X'}))//模擬手機(jī)型號(hào)
    .build();
(async function example() {
    await driver.get('https://www.baidu.com')
    let imagedata=await driver.takeScreenshot()//執(zhí)行截圖操作,并將截圖數(shù)據(jù)定義給變量imagedata
    fs.writeFileSync(__dirname+'/image.png',imagedata,'base64')//將截圖保存為圖片诊霹,其中_dirname是當(dāng)前目錄亦歉,
    ///image.png為圖片的命名,imagedata是剛剛的截圖數(shù)據(jù)畅哑,'base64'是圖片的編碼格式
})()

運(yùn)行出來(lái)的結(jié)果是這樣的肴楷,可以明顯的看出這個(gè)界面的大小與我們平時(shí)的web瀏覽器是不一樣的,的確是模擬出了手機(jī)瀏覽器

這里的型號(hào)隨你挑選荠呐,想用什么機(jī)型就用什么機(jī)型赛蔫,模擬出來(lái)后其余的UI自動(dòng)化部分跟往常一樣操作就好

今天的內(nèi)容到這里結(jié)束了,大家記得每天學(xué)習(xí)一點(diǎn)泥张,每天進(jìn)步一點(diǎn)呵恢,
Node.js結(jié)合Selenium做web自動(dòng)化測(cè)試
騰訊課堂https://ke.qq.com/course/281565#tuin=173f40be
晚上8:00,不見(jiàn)不散
測(cè)試工具CukeTest下載地址http://www.cuketest.com/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末媚创,一起剝皮案震驚了整個(gè)濱河市渗钉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌钞钙,老刑警劉巖鳄橘,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異芒炼,居然都是意外死亡瘫怜,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)本刽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鲸湃,“玉大人赠涮,你說(shuō)我怎么就攤上這事“堤簦” “怎么了笋除?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)炸裆。 經(jīng)常有香客問(wèn)我垃它,道長(zhǎng),這世上最難降的妖魔是什么晒衩? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮墙歪,結(jié)果婚禮上听系,老公的妹妹穿的比我還像新娘。我一直安慰自己虹菲,他們只是感情好靠胜,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著毕源,像睡著了一般浪漠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上霎褐,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天址愿,我揣著相機(jī)與錄音,去河邊找鬼冻璃。 笑死响谓,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的省艳。 我是一名探鬼主播娘纷,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼跋炕!你這毒婦竟也來(lái)了赖晶?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤辐烂,失蹤者是張志新(化名)和其女友劉穎遏插,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體纠修,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡涩堤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了分瘾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胎围。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吁系,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出白魂,到底是詐尸還是另有隱情汽纤,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布福荸,位于F島的核電站蕴坪,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏敬锐。R本人自食惡果不足惜背传,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望台夺。 院中可真熱鬧径玖,春花似錦、人聲如沸颤介。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)滚朵。三九已至冤灾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間辕近,已是汗流浹背韵吨。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留移宅,地道東北人学赛。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像吞杭,于是被迫代替她去往敵國(guó)和親盏浇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容