Selenium-WebDriver框架經常使用基本操做

 

1.基礎元素定位的八種方法

WebDriver driver = new ChromeDriver();css

WebElement element = new WebElement();windows

1.1 By.id()

element = driver.findElement(By.id)瀏覽器

1.2 By.name()

1.3 By.xpath()

1.3.1 路徑匹配

(1)用「/」指示節點路徑 
如「/A/C/D」 表示節點"A"的子節點"C"的子節點"D", 「/」表示根節點。函數

(2)用「//」 表示全部路徑以"//"後指定的子路徑結尾的元素 
如「//E」 表示全部E元素,結果是全部三個E元素,如「//C/E」表示全部父節點爲C的E元素。ui

(3)用「*」 表示路徑的通配符 
如「/A/B/C/*」表示 A元素→B元素→C元素下的全部子元素url

 

1.3.2 位置匹配

對於每個元素,它的各個子元素是有序的。插件

如:/A/B/C[1]表示A元素→B元素→C元素的第一個子元素 /A/B/C[last()]表示A元素→B元素→C元素的最後一個子元素 /A/B/C[position()>1]表示A元素→B元素→C元素之下的位置號大於1的元素element

 

1.3.3 屬性及屬性值

在XPath中能夠利用屬性及屬性值來匹配元素,要注意的是,元素的屬性名前要有"@"前綴。例如:文檔

//B[@id]表示全部具備屬性id的B元素字符串

  //B[@*]表示全部具備屬性的B元素

//B[not(@*)]表示全部不具備屬性的B元素

//B[@id="b1"] id值爲b1的B元素

 

1.3.4 親屬關係搭配

XML文檔可歸結爲樹型結構,所以任何一個節點都不是孤立的。一般咱們把節點之間的歸屬關係歸結爲一種親屬關係,如父親、孩子、祖先、後代、兄弟等等。在對元素進行匹配時,一樣能夠用到這些概念。例如:

 

//E/parent::* 表示全部E節點的父節點元素

//F/ancestor::* 表示全部F元素的祖先節點元素

/A/child::* 表示A的全部子元素

/A/descendant::* 表示A的全部後代元素

//F/self::* 表示全部F的自身元素

//F/ancestor-or-self::* 表示全部F元素及它的祖先節點元素

/A/C/descendant-or-self::* 表示全部A元素→C元素及它們的後代元素

/A/C/following-sibling::* 表示A元素→C元素的緊鄰的後序全部兄弟節點元素

/A/C/preceding-sibling::* 表示A元素→C元素的緊鄰的前面全部兄弟節點元素

/A/B/C/following::* 表示A元素→B元素→C元素的後序的全部元素

/A/C/preceding::* 表示A元素→C元素的前面的全部元素

 

1.3.5 條件匹配

條件匹配就是利用一些函數的運算結果的布爾值來匹配符合條件的節點。經常使用於條件匹配的函數有四大類:節點函數、字符串函數、數值函數、布爾函數。例如last()、position()等等

 

例子以下:

1./A/B/C[position()>1]表示A元素→B元素→C元素之下的位置號大於1的元素

2. /A/B/C[last()]表示A元素→B元素→C元素的最後一個子元素

3.//B[not(@id)]表示全部不具備id屬性的B元素

4. "//a[contains(@href, 'news')]")在頁面中尋找href屬性值中包含「news」的全部a元素

5. //a[starts-with(@href, 'http://news')]") 在頁面中尋找href屬性值中以「http://news」開頭的全部a元素。@後面能夠跟着尋找元素的任意屬性名

6.其餘的就不一一列舉了

 

1.4 By.tagName()

使用tagName方法來查找元素,通常元素都是不止一個,能夠結合findElements方法和type屬性來精準定位。

例如:List<WebElement> a = driver.findElements(By.tagName("a"));

  

1.5 By.className()

1.6 By.linkText

<a href="http://news.baidu.com" name="tj_trnews" class="mnav">新聞</a>

driver.findElement(By.linkText(「新聞」));

1.7 By.partiaLinkText()

driver.findElement(By.linkText(「新」));

1.8 By.cssSelectior()

此方法和By.xpath()相似,不熟悉規則能夠直接用瀏覽器中的插件直接右擊元素,選擇Copy – Copy selector便可

 

2對瀏覽器窗口的一些操做

2.1.彈出窗口爲Confirm類型

選擇確認:

Alert al = driver.switchTo().alert();

al.accept();

 

選擇取消:

Alert al = driver.switchTo().alert();

al.dismiss();

 

2.2 彈出窗口爲Alert類型

Alert al = driver.switchTo().alert();

al.accept();

 

  

 2.3 放大瀏覽器窗口

      driver.manage().window().maximize();

  

 2.4 關閉瀏覽器

      driver.quit();關閉整個瀏覽器

      driver.close();關閉當前瀏覽器標籤頁

   

2.5 刷新/前進/後退

  driver.navigate().refresh();

  driver.navigate().forwari();

  driver.navigate().back();

 

2.6 獲取瀏覽器當前title

driver.getTitle();

 

2.7 獲取瀏覽器當前url

driver.getCurrentUrl();

 

2.8 獲取當前頁面源碼信息

driver.getPageSource();

 

2.9 其餘的就不一一列舉了

 

2.10 切換瀏覽器頁籤

String currentWindow = driver.getWindowHandle();

List<String> windows = driver.getWindowHandles();

driver.swithTo.window(windows(1));

 
其餘基本操做方法後續再補充…
相關文章
相關標籤/搜索