WebUI自動化之Selenium,基于java

一、什么是Selenium?

????1、“Selenium”是一個項目的名字,它包括了一組工具和API:Selenium IDE,Selenium RC,Selenium WebDriver,和Selenium Grid等。其中Selenium IDE是一個Firefox的插,這篇文章我們主要來看下Selenium WebDriver。Selenium WebDriver 是一個支持瀏覽器自動化的工具。它包括一組為不同語言提供的類庫和“驅(qū)動”(drivers)可以使瀏覽器上的動作自動化

二、 Selenium?? WebDriver? 入門使用

? ? 1、創(chuàng)建Selenium 的java項目

首先我們來看下官方文檔,https://www.seleniumhq.org/docs/06_test_design_considerations.jsp

設(shè)置Selenium 2.0 Java項目的最簡單方法是使用Maven.。創(chuàng)建一個maven項目,在pom.xml文件中引入對應(yīng)版本的jar包就可以。 版本號都可以吧,看自己的需求。如圖是我引入的版本號

2、常用的一些API文檔

? ? 1)關(guān)于瀏覽器的一些操作,以下以Chrome為例

? ??打開chrome瀏覽器:WebDriverdriver = new ChromeDriver();?

????最大化瀏覽器:driver.manage().window().maximize();

????關(guān)閉瀏覽器:driver.close();? ??driver.quit();

????打開頁面:driver.get("http://www.google.com");

????????????????????driver.navigate().to("http://www.baidu.com/");?

????????????????????navigate方法會產(chǎn)生1個Navigator對象,其封裝了與導(dǎo)航相關(guān)的一些方法,比如前進后退刷新等

? ? 2)關(guān)于定位元素:

????findElement(By.id())? ?通過id屬性定位元素

????findElement(By.name())? ? ?通過name屬性定位元素

????findElement(By.className())? ??通過class屬性定位元素

????findElement(By.tagName())? ? 通過HTML標(biāo)簽名定位元素

????findElement(By.linkText())? ?通過鏈接內(nèi)容定位元素

????findElement(By.partialLinkText())? ??通過部分鏈接內(nèi)容定位元素

????findElement(By.xpath())? ? ? ??通過css選擇器定位元素

????findElement(By.cssSelector())? ? ?通過xpath定位元素

3)關(guān)于鼠標(biāo)事件

鼠標(biāo)事件,首先要引入actions類。Actions action =new Actions(driver);

actions類提供了一些常用的方法

. contextClick() ? ?右擊

· clickAndHold() ? 鼠標(biāo)點擊并控制

· doubleClick() ? ?雙擊

· dragAndDrop() ? 拖動

· release() ? ? ? ?釋放鼠標(biāo)

· perform() ?執(zhí)行所有Actions中存儲的行為

4)關(guān)于iframe


第一個是根據(jù)frame的索引來定位,第二個是根據(jù)frame的ID或者name去識別,第三個是根據(jù)該frame內(nèi)部一個元素去識別,第四個就是從frame內(nèi)部切換到默認(rèn)的Top Window的方法。

這里要注意,利用索引來切換frame的時候只有對平級的iframe才有效果,如果是嵌套的iframe,建議是根據(jù)ID或者name去切換。當(dāng)然某些情況下可能沒有ID或者name是隨即生成的,這個時候可以先找到對應(yīng)的iframe的xpath。再根據(jù)xpath去切換。例如:

WebElementtxtFMortgageDeptName=driver.findElement(By.xpath("/html[1]/body[1]/div[5]/iframe[1]" ));

driver.switchTo().frame(txtFMortgageDeptName);

雖然iframe的切換常用的只有以上幾種方式,但是在整個過程當(dāng)中,還是被iframe的坑 整得崩潰。說出來都是淚,一時半會感覺表達不清楚。如果有同行碰到坑,歡迎留言。比如已經(jīng)進入了一個iframe,想要直接切換到另一個嵌套的子iframe,居然報錯。后來每次都是先切換到主窗口,driver.switchTo().defaultContent();然后再進行切換。最最最重要的是,還是在看運行時,整個網(wǎng)頁的dom結(jié)構(gòu),再決定如何去切換iframe。

三、?Selenium?WebDriver 的一些簡單封裝

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容