Hi,親愛(ài)的小伙伴們玩讳,新的一周開(kāi)始了涩蜘,不要有起床氣和周一綜合癥嚼贡,好好學(xué)習(xí),天天快樂(lè)同诫!
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上的寫(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ì)向你招手的
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ù)這個(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ī)瀏覽器
今天的內(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/