WebDriver driver = new ChromeDriver();css
WebElement element = new WebElement();windows
element = driver.findElement(By.id)瀏覽器
(1)用「/」指示節點路徑
如「/A/C/D」 表示節點"A"的子節點"C"的子節點"D", 「/」表示根節點。函數
(2)用「//」 表示全部路徑以"//"後指定的子路徑結尾的元素
如「//E」 表示全部E元素,結果是全部三個E元素,如「//C/E」表示全部父節點爲C的E元素。ui
(3)用「*」 表示路徑的通配符
如「/A/B/C/*」表示 A元素→B元素→C元素下的全部子元素url
對於每個元素,它的各個子元素是有序的。插件
如:/A/B/C[1]表示A元素→B元素→C元素的第一個子元素 /A/B/C[last()]表示A元素→B元素→C元素的最後一個子元素 /A/B/C[position()>1]表示A元素→B元素→C元素之下的位置號大於1的元素element
在XPath中能夠利用屬性及屬性值來匹配元素,要注意的是,元素的屬性名前要有"@"前綴。例如:文檔
//B[@id]表示全部具備屬性id的B元素字符串
//B[@*]表示全部具備屬性的B元素
//B[not(@*)]表示全部不具備屬性的B元素
//B[@id="b1"] id值爲b1的B元素
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元素的前面的全部元素
條件匹配就是利用一些函數的運算結果的布爾值來匹配符合條件的節點。經常使用於條件匹配的函數有四大類:節點函數、字符串函數、數值函數、布爾函數。例如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.其餘的就不一一列舉了
使用tagName方法來查找元素,通常元素都是不止一個,能夠結合findElements方法和type屬性來精準定位。
例如:List<WebElement> a = driver.findElements(By.tagName("a"));
<a href="http://news.baidu.com" name="tj_trnews" class="mnav">新聞</a>
driver.findElement(By.linkText(「新聞」));
driver.findElement(By.linkText(「新」));
此方法和By.xpath()相似,不熟悉規則能夠直接用瀏覽器中的插件直接右擊元素,選擇Copy – Copy selector便可
選擇確認:
Alert al = driver.switchTo().alert();
al.accept();
選擇取消:
Alert al = driver.switchTo().alert();
al.dismiss();
Alert al = driver.switchTo().alert();
al.accept();
driver.manage().window().maximize();
driver.quit();關閉整個瀏覽器
driver.close();關閉當前瀏覽器標籤頁
driver.navigate().refresh();
driver.navigate().forwari();
driver.navigate().back();
driver.getTitle();
driver.getCurrentUrl();
driver.getPageSource();
String currentWindow = driver.getWindowHandle();
List<String> windows = driver.getWindowHandles();
driver.swithTo.window(windows(1));
其餘基本操做方法後續再補充…