基于Selenium的Web UI自动化实现(java)
做了一段時間的自動化,現在整理出了一些個人的見解,后續計劃照著這個步驟進行深入學習。
首先我認為,一個較完善的自動化項目,需要考慮以下問題:
 1)測試用例的存放與讀取
 2)對瀏覽器的各種操作
 3)如何定位元素與執行用例
 4)如何判斷執行結果是否正確(斷言)
 5)在執行過程中打印日志
 6)執行完成后生成報告
我寫了一個小項目,實現了上面的2和3這兩步。這個項目所完成的功能就是“打開百度,搜索12306”。具體實現過程如下
一、創建項目
在 eclipse 中新建項目取名為 WebUIAuto,新建了幾個 package:
- main
 存放實現自動化過程的 java 代碼
- test
 存放執行測試的 test 類
- resource
 存放一些資源及配置文件
- utils
 存放一些常用的工具類
二、新建配置文件
為了方便后期的維護,我將一些可能隨時修改的東西放進了配置文件中,比如使用的瀏覽器、需要訪問的地址等。
在 resource 文件夾下新建 input.properties 文件,記錄我們需要用到的瀏覽器與地址,如下:
 
 注意在這個 properties 文件中,“=”后面最好不要留空格,否則在打開 url 時可能報錯。
三、讀取配置文件
在 utils 文件夾下新建 Config 類,用來讀取配置文件中的配置。代碼如下:
public class Config {public static Properties getProperties(){InputStream inputStream = null;inputStream = Config.class.getResourceAsStream("/resource/input.properties");Properties properties = new Properties();try {properties.load(inputStream);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return properties;} }四、實現瀏覽器的操作
在 main 文件夾下新建 Browser 類,實現瀏覽器操作的各種方法。代碼如下:
public class Browser {public WebDriver webDriver;/*** 初始化webdriver,打開地址* @param url* @return*/public WebDriver openUrl(String url){Properties properties = Config.getProperties();String browser = properties.getProperty("browser");switch(browser){case "firefox":System.setProperty("webdriver.gecko.driver", "D:\\Firefox\\geckodriver.exe");webDriver = new FirefoxDriver();break;case "ie":System.setProperty("webdriver.id.driver", "");webDriver = new InternetExplorerDriver();break;default:System.setProperty("webdriver.chrome.driver", "D:\\Chrome\\chromedriver.exe");webDriver = new ChromeDriver();break;}webDriver.get(url);webDriver.manage().window().maximize();return webDriver;}/*** 退出瀏覽器*/public void close(){try{//延遲兩秒關閉瀏覽器Thread.sleep(2000);webDriver.close();}catch (Exception e) {// TODO: handle exception}} }這里需要去網上下載一些東西:
- selenium webdriver 對應的 jar 包
 添加方式為右鍵點擊項目 -> properties -> Java Build Path,如圖
 
- 下載瀏覽器對應的驅動
 firefox — geckodriver.exe
 chrome — chromedriver.exe
 注意驅動的版本要和瀏覽器版本對應
五、編寫實現操作的方法
打開瀏覽器后,我們要實現的方法有兩個,一是向輸入框中輸入要查找的內容,二是點擊搜索按鈕。這兩個方法是在同一個頁面上進行操作的,所以我們將頁面作為對象,在 main 下面新建 SearchPage 類。代碼如下:
public class SearchPage {/*** 輸入內容* @param driver* @param keyword*/public void input(WebDriver driver,String keyword){driver.findElement(By.id("kw")).sendKeys(keyword);}/*** 點擊搜索按鈕* @param driver*/public void search(WebDriver driver){driver.findElement(By.id("su")).click();} }其中,對頁面的操作是通過 findElement By id 的方式來定位的,詳細定位方式將在后面介紹。
六、填充數據,執行操作
瀏覽器和頁面的操作都已經封裝完成了,接下來就看是否能執行我們預期的操作,在 test 文件夾下新建 TestSearch 類,代碼如下:
public class TestSearch {@Testpublic void testSearch(){Browser browser = new Browser();Properties properties = Config.getProperties();WebDriver driver = browser.openUrl(properties.getProperty("url"));SearchPage search = new SearchPage();search.input(driver, "12306");search.search(driver);driver.close();}}我們采用 TestNG 來執行測試,注意對應的包是
org.testng.annotations.Test;
不要導成了 JUnit 下面的 TestNG
右鍵點擊項目或 TestSearch 類 -> Run As -> TestNG Test,可以看到項目成功運行。
 
 掃碼關注微信公眾號
 
總結
以上是生活随笔為你收集整理的基于Selenium的Web UI自动化实现(java)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: matlab %3c handle,vo
- 下一篇: C++里的花括号{},块,作用域
