本文章轉(zhuǎn)載于搜狗測(cè)試
本文中,小編將給大家介紹下selenium中常用的一些操作和如何進(jìn)行封裝重用。
一、Selenium常見元素操作
1、元素定位
在case編寫過程中許多的操作都要求我們首先找到所操作元素,這些元素通常包括:按鈕、輸入框、字符串、圖片、文字鏈接等。
其中幾種常見的元素定位方式包括:
a) Id:根據(jù)元素id屬性By.id(value)
b) classname:By.className(value)
c) xpath:一種xml文檔定位元素語言By.xpath(value)
d) 文字鏈接:直接根據(jù)文字鏈接By.linkText(value)
e) css定位:By.cssSelector(value)
f) name:根據(jù)元素name屬性By.name(value)
其中,id/classname/xpath又是最常用的幾種定位方式,下面我們以前文介紹的搜狗游戲登錄頁面登錄按鈕的定位為例看一下這三種方式具體是如何定位的,首先,下面是登錄按鈕的HTML代碼:
根據(jù)Id定位為:By.id("LoginBtn")
根據(jù)classname定位為:By.className("login-btn")
根據(jù)xpath定位為:By.xpath("http://div[@class='login-btnscf']/a")
2、窗口切換
在web操作中,許多點(diǎn)擊操作是新開tab或彈框方式打開的,這時(shí)selenium的操作如果是在新開tab或彈框中進(jìn)行的,需要首先切換到新的窗口中。通常是通過循環(huán)操作定位到新的tab或彈框,下面是搜狗游戲平臺(tái)人人賬號(hào)登錄示例:
首先,是用while循環(huán)定位到要操作的彈框,完成相關(guān)操作后,通過switchTo()切換到當(dāng)前頁面。
3、鼠標(biāo)、鍵盤模擬操作
鼠標(biāo)和鍵盤的模擬操作是通過actions和robot類實(shí)現(xiàn)的,如下圖:
上面代碼模擬的是搜狗游戲大廳安裝文件下載并保存操作。首先在名為link的元素上進(jìn)行右鍵操作后,移動(dòng)光標(biāo)到選擇項(xiàng)后,執(zhí)行確認(rèn)操作。
4、頁面常用其它操作
a) 打開頁面
driver.get("…")
b) 鏈接跳轉(zhuǎn)
driver.navigate().to("…")
c) 點(diǎn)擊操作
driver.findElement(By).click()
d) 元素查找
driver.findElement(By.XXX("…"))
e) 斷言
assertTitle:檢查當(dāng)前頁面title
assertText:檢查指定元素文本
assertTextPresent:檢查當(dāng)前頁面是否存在指定文本
waiForElementPresent:等待檢查元素是否存在,為真則繼續(xù)
二、Selenium封裝
當(dāng)我們的case數(shù)量很大的時(shí)候,相信你一定會(huì)發(fā)現(xiàn)case中重復(fù)性代碼會(huì)很多,這時(shí),我們?nèi)魧⑵渲械囊恍┲貜?fù)性代碼進(jìn)行封裝的話,便會(huì)大大的減少代碼量,讓我們的case看上去更加簡(jiǎn)潔。
我們的封裝是從兩方面去考慮,包括:常用基本操作的封裝和重復(fù)率比較高的模塊的封裝。下面是搜狗游戲平臺(tái)對(duì)部分常用操作和模塊封裝實(shí)例:
1、常用操作封裝
a) 查找元素操作封裝
b) WebDriver實(shí)例化操作封裝
c) 文本框輸入操作
d) 按鈕/鏈接點(diǎn)擊操作
e) 文本獲取操作
f) 文本存在性驗(yàn)證操作
g) 頁面title校驗(yàn)操作
h) 頁面刷新操作

i) 窗口切換操作
j) JS語句執(zhí)行操作
2、模塊封裝
模塊的封裝是指對(duì)系統(tǒng)中重復(fù)率比較高的模塊進(jìn)行封裝,例如,搜狗游戲平臺(tái)許多頁面操作都需要用戶登錄后才可以進(jìn)行,這時(shí)我們便可以將登錄模塊進(jìn)行封裝完成后,在case直接調(diào)用即可。下面是對(duì)前文登錄模塊的進(jìn)行封裝: