日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

selenium java封装_selenium2.0的初步封装(java版本)

發(fā)布時間:2025/3/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 selenium java封装_selenium2.0的初步封装(java版本) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我們都知道, 在本地創(chuàng)建java項目后,引入selenium-java-2.35.0.jar?? selenium-support-2.35.0.jar junit-4.8.1.jar等等jar包之后,(或者創(chuàng)建Java maven項目,在pom.xml的中添加依賴,?Maven能夠自動下載相應版本的jar包), 之后, 就可以在本地開發(fā)selenium自動化腳本

在完全沒有封裝的情況下, 一般的順序是:

1)得到瀏覽器驅(qū)動:

WebDriver driver=new FirefoxDriver();

2)通過WebDriver提供的方法打開網(wǎng)頁:

driver.get("urlString");? 或者? driver.navigate.to("urlString")

3)通過driver.findElement(By.***)找到元素

找元素的過程, 需要做等待處理, 可以用Thread.sleep(), 然而為了提高腳本的效率和健壯性, 一般不采用這種等待方式,可以通過采用 WebDriverWait類+ExpectedConditions接口方式來靈活等待元素出現(xiàn),具體處理可以見“selenium1.0和selenium2.0頁面等待處理詳解”

4)對元素進行操作

上面步驟3得到元素WebElement,通過WebElement提供的方法, 對元素進行操作(click()/sendKeys()/submit()/getText())等等

5)通過打開頁面、找元素、等待元素、對元素操作等一系列模擬人為動作后,第5步就需要做真正要測試的目的,即檢查操作后的結(jié)果

比如, 驗證某個元素是否出現(xiàn), 驗證是否輸出正確的結(jié)果, 此時的步驟可以是試圖去找元素,待 wait.until()拋異常后, 還是沒找到元素的話, 判斷為該元素不存在。 在驗證輸出結(jié)果時,重復上述3) 4) 5)步驟取出元素, 再通過if? String.contains()? 或者String.equals()來判斷輸出結(jié)果

顯然, 上述是比較繁瑣的過程, 寫出來的腳本, 也會出現(xiàn)很多冗余的相同操作代碼,這樣的腳本,維護起來吃力, 下面,將對上面的過程做一個小小封裝, 這樣可以只調(diào)用一個方法, 就可以完成 “查找/等待/操作元素”?、 “查找/等待/判斷元素是否存在” 或者? “查找/等待/判斷輸出內(nèi)容” 等等

1、

設定允許最長的等待時間:

WebDriverWait wait=new WebDriverWait(driver, 10);

2、查找元素是否存在的過程,放在一個類里面

class ElementExistOrNot implements Function{//第一個參數(shù)為apply方法的參數(shù)類型,第二個參數(shù)為apply方法的返回類型

privateBy by;privateString sign;publicElementExistOrNot(By by, String sign) {this.by =by;this.sign =sign;

}

@OverridepublicBoolean apply(WebDriver driver) {try{

WebElement e=driver.findElement(by);if(sign.equals("yes")){return true;

}else{return false;

}

}catch(Exception e){if(sign.equals("yes")){return false;

}else{return true;

}

}

}

}

3、進行簡單封裝成方法供調(diào)用

//完成對元素的 ”查找+等待+驗證存在性“ 的封裝

public voidwaitUntilElementExist(By by){

ElementExistOrNot isTrue=new ElementExistOrNot(by, "yes");try{

wait.until(isTrue);

}catch(Exception e){

fail("Element [" + by + "] should presents!");

}

}

4、有了這些方法后,再繼承這些方法所在的類, 就可以輕松調(diào)用啦~

PS:

另外,還有其他一些?“查找/等待/操作元素” 、? “查找/等待/判斷輸出內(nèi)容” 等等,思路基本相同, 下面再提供一些封裝方式的完整源碼:

packagecom.jennifer.functiontest;importorg.junit.After;importorg.junit.Assert;importorg.junit.Before;importorg.openqa.selenium.By;importorg.openqa.selenium.WebDriver;importorg.openqa.selenium.WebElement;importorg.openqa.selenium.firefox.FirefoxDriver;importorg.openqa.selenium.support.ui.WebDriverWait;importcom.google.common.base.Function;public class jenniferBase extendsAssert {protectedWebDriver driver;protectedWebDriverWait wait;

@Beforepublic voidinit(){

driver=newFirefoxDriver();

wait=new WebDriverWait(driver, 10);

}//得到帶有等待機制的WebElement(對“找元素+等待”的封裝)

publicWebElement e(By by){try{

waitUntilElementExist(by);returndriver.findElement(by);

}catch(Exception e) {

fail("Can't find element: ["+by+"]");

}return null;

}//完成對元素的“查找+等待(直到元素存在)+驗證+點擊 操作”的封裝

public voidclickAndWait(By by){

e(by).click();

}//完成對元素的 ”查找+等待+驗證存在性“ 的封裝

public voidwaitUntilElementExist(By by){

ElementExistOrNot isTrue=new ElementExistOrNot(by, "yes");try{

wait.until(isTrue);

}catch(Exception e){

fail("Element [" + by + "] should presents!");

}

}//完成對元素的“查找+等待+驗證不存在性”的封裝

public voidwaitUntilElementNotExist(By by){

ElementExistOrNot isTrue=new ElementExistOrNot(by, "no");try{

wait.until(isTrue);

}catch(Exception e) {

fail("Element [" + by + "] should not presents!");

}

}//完成對元素的“查找+等待+驗證其text存在性”的封裝

public voidwaitUntilElementEqualsText(By by,String s){

waitUntilElementExist(by);

ElementEqualsOrNot isTrue=new ElementEqualsOrNot(by, "yes", s, "text");try{

wait.until(isTrue);

}catch(Exception e) {

fail("Element ["+by+"] text should equals"+s+"but not it equals"+e(by).getText());

}

}//完成對元素的“查找+等待+驗證其value存在性”的封裝

public voidwaitUntilElementEqualsValue(By by,String s){

waitUntilElementExist(by);

ElementEqualsOrNot isTrue=new ElementEqualsOrNot(by, "yes", s, "value");try{

wait.until(isTrue);

}catch(Exception e) {

fail("Element ["+by+"] value should equals:"+s+"but not it equals:"+e(by).getValue());

}

}

@Afterpublic voidtearDown(){

driver.quit();

}

}class ElementExistOrNot implements Function{//第一個參數(shù)為apply方法的參數(shù)類型,第二個參數(shù)為apply方法的返回類型

privateBy by;privateString sign;publicElementExistOrNot(By by, String sign) {this.by =by;this.sign =sign;

}

@OverridepublicBoolean apply(WebDriver driver) {try{

WebElement e=driver.findElement(by);if(sign.equals("yes")){return true;

}else{return false;

}

}catch(Exception e){if(sign.equals("yes")){return false;

}else{return true;

}

}

}

}class ElementEqualsOrNot implements Function{privateBy by;privateString sign;privateString s;privateString textOrValue;publicElementEqualsOrNot(By by, String sign, String s, String textOrValue) {this.by =by;this.sign =sign;this.s =s;this.textOrValue =textOrValue;

}

@OverridepublicBoolean apply(WebDriver driver) {

WebElement e=driver.findElement(by);if(sign.equals("yes")){ //確定存在性

if(textOrValue.equals("text")){ //確定text的存在性

returne.getText().equals(s);

}else{ //確定value的存在性

returne.getValue().equals(s);

}

}else{//確定不存在性

if(textOrValue.equals("text")){return !e.getText().equals(s);

}else{return !e.getValue().equals(s);

}

}

}

}

以上只是個人的一點封裝思路,其他有別的更好封裝方案, 請指教^_^

總結(jié)

以上是生活随笔為你收集整理的selenium java封装_selenium2.0的初步封装(java版本)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。