一、什么是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 的一些簡單封裝