<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # Selenium WebDriver 中的 XPath:完整教程 > 原文: [https://www.guru99.com/xpath-selenium.html](https://www.guru99.com/xpath-selenium.html) 在 Selenium 自動化中,如果一般定位符(例如 id,class,name 等)找不到元素,則使用 XPath 在網頁上查找元素。 在本教程中,我們將學習 xpath 和不同的 XPath 表達式以查找復雜或動態元素,這些元素的屬性在刷新或執行任何操作時會動態更改。 在本教程中,您將學習- * [什么是 XPath?](#1) * [X 路徑的類型](#2) * [絕對 XPath](#3) * [相對 XPath](#4) * [基本 XPath](#5) * [Contains()](#6) * [使用或&和](#7) * [啟動功能](#8) * [Text()](#9) * [XPath 軸方法](#10) * [關注](#11) * [祖先](#12) * [兒童](#13) * [之前的](#14) * [后繼兄弟](#15) * [父級](#16) * [自我](#17) * [后代](#18) ## 什么是 XPath? XPath 被定義為 **XML 路徑**。 **它是用于使用 XML 路徑表達式**在網頁上查找任何元素的語法或語言。 XPath 用于使用 HTML DOM 結構查找網頁上任何元素的位置。 XPath 的基本格式將在下面通過屏幕截圖進行說明。 ![XPath in Selenium WebDriver: Complete Tutorial](https://img.kancloud.cn/69/7c/697c487a6bb938153d3d8c3d9d63487f_1112x463.png "XPath in Selenium: Complete Guide") XPath 的**語法:** XPath 包含位于網頁上的元素的路徑。 創建 XPath 的標準語法是。 ``` Xpath=//tagname[@attribute='value'] ``` * **//::**選擇當前節點。 * **標記名:**特定節點的標記名。 * **@:**選擇屬性。 * **屬性:**節點的屬性名稱。 * **值:**屬性的值。 為了準確地在網頁上找到元素,可以使用不同類型的定位器: | **XPath 定位器** | **在網頁**上查找其他元素 | | **ID** | 通過元素的 ID 查找元素 | | **類別名稱** | 通過元素的類名查找元素 | | **名稱** | 通過元素名稱查找元素 | | **鏈接文字** | 通過鏈接的文本查找元素 | | **XPath** | 查找動態元素并在網頁的各種元素之間遍歷所需的 XPath | | **CSS 路徑** | CSS 路徑還會查找沒有名稱,類或 ID 的元素。 | ## X 路徑的類型 XPath 有兩種類型: **1)絕對 XPath** **2)相對 XPath** ### 絕對 XPath: 這是查找元素的直接方法,但是絕對 XPath 的缺點是,如果在元素的路徑中進行了任何更改,則 XPath 將會失敗。 XPath 的關鍵特征是它以單個正斜杠(/)開頭,這意味著您可以從根節點中選擇元素。 以下是以下屏幕中顯示的元素的絕對 xpath 表達式的示例。 **絕對 xpath:** ``` html/body/div[1]/section/div[1]/div/div/div/div[1]/div/div/div/div/div[3]/div[1]/div/h4[1]/b ``` ![XPath in Selenium WebDriver: Complete Tutorial](https://img.kancloud.cn/c5/9a/c59af1bd509fd8501a752111d8b1b557_793x410.png "XPath in Selenium: Complete Guide") ### 相對 xpath: 對于相對 Xpath,路徑從 HTML DOM 結構的中間開始。 它以雙斜杠(//)開頭,這意味著它可以在網頁上的任何位置搜索元素。 您可以從 HTML DOM 結構的中間開始,而無需編寫長 xpath。 以下是以下屏幕中顯示的相同元素的相對 XPath 表達式的示例。 這是用于通過相對 XPath 查找元素的常用格式。 ``` Relative xpath: //*[@class='featured-box']//*[text()='Testing'] ``` [![XPath in Selenium WebDriver: Complete Tutorial](https://img.kancloud.cn/cf/65/cf65e560d29170e1776b83bf1878e768_783x400.png "XPath in Selenium: Complete Guide") ](/images/3-2016/032816_0758_XPathinSele3.png) **什么是 XPath 軸。** XPath 軸從當前上下文節點搜索 XML 文檔中的不同節點。 XPath 軸是用于查找動態元素的方法,否則,這是沒有 ID,Classname,Name 等的常規 XPath 方法無法實現的。 軸方法用于查找那些在刷新或任何其他操作時會動態更改的元素。 Selenium Webdriver 中常用的坐標軸方法很少,如孩子,父母,祖先,兄弟姐妹,在前,自己等。 ## 在硒中使用 XPath 處理復雜的&動態元素 ### 1)基本 XPath: XPath 表達式基于 XML 文檔中的 **ID,Name,Classname** 等屬性,選擇節點或節點列表,如下所示。 ``` Xpath=//input[@name='uid'] ``` 這是訪問頁面[的鏈接 http://demo.guru99.com/v1/](http://demo.guru99.com/v1/) [![XPath in Selenium WebDriver: Complete Tutorial](https://img.kancloud.cn/de/96/de9651b915685529f86c9ed7c3a2d1f0_950x466.png "XPath in Selenium: Complete Guide") ](/images/3-2016/032816_0758_XPathinSele4.png) 一些更基本的 xpath 表達式: ``` Xpath=//input[@type='text'] Xpath= //label[@id='message23'] Xpath= //input[@value='RESET'] Xpath=//*[@class='barone'] Xpath=//a[@href='http://demo.guru99.com/'] Xpath= //img[@src='//cdn.guru99.com/images/home/java.png'] ``` ### 2)Contains(): Contains()是 XPath 表達式中使用的方法。 當任何屬性的值動態更改(例如,登錄信息)時,將使用該屬性。 包含功能可以查找具有部分文本的元素,如以下示例所示。 在此示例中,我們嘗試僅通過使用屬性的部分文本值來標識元素。 在下面的 XPath 表達式中,部分值'sub'代替了提交按鈕。 可以觀察到成功找到了元素。 “類型”的完整值是“提交”,但僅使用部分值“子”。 ``` Xpath=//*[contains(@type,'sub')] ``` “名稱”的完整值是“ btnLogin”,但僅使用部分值“ btn”。 ``` Xpath=//*[contains(@name,'btn')] ``` 在上面的表達式中,我們將“名稱”作為屬性,并將“ btn”作為部分值,如下面的屏幕快照所示。 這將發現 2 個元素(LOGIN & RESET),因為它們的“名稱”屬性以“ btn”開頭。 [![XPath in Selenium WebDriver: Complete Tutorial](https://img.kancloud.cn/2c/e1/2ce17f96019a51d1cea1a2f0b698b5ff_597x499.png "XPath in Selenium: Complete Guide") ](/images/3-2016/032816_0758_XPathinSele5.png) 同樣,在下面的表達式中,我們將“ id”作為屬性,將“ message”作為部分值。 這將找到 2 個元素(“用戶 ID 不能為空” &“密碼不能為空”),因為其“名稱”屬性以“消息”開頭。 ``` Xpath=//*[contains(@id,'message')] ``` [![XPath in Selenium WebDriver: Complete Tutorial](https://img.kancloud.cn/5c/0d/5c0d553562d9fc69c6bbabd3dae9d975_936x457.png "XPath in Selenium: Complete Guide") ](/images/3-2016/032816_0758_XPathinSele6.png) 在下面的表達式中,我們將鏈接的“文本”作為屬性,并將“ here”作為部分值,如下面的屏幕快照所示。 當顯示文本“ here”時,將找到鏈接(“ here”)。 ``` Xpath=//*[contains(text(),'here')] Xpath=//*[contains(@href,'guru99.com')] ``` [![XPath in Selenium WebDriver: Complete Tutorial](https://img.kancloud.cn/9f/98/9f98c219abba4819250432961a77fd07_638x409.png "XPath in Selenium: Complete Guide") ](/images/3-2016/032816_0758_XPathinSele7.png) ### 3)使用 OR & AND: 在 OR 表達式中,使用兩個條件,第一個條件還是第二個條件應為 true。 如果任何一個條件為真或兩者皆有,則也適用。 意味著找到元素的任何一種條件都應該為真。 在下面的 XPath 表達式中,它標識單個或兩個條件都成立的元素。 ``` Xpath=//*[@type='submit' or @name='btnReset'] ``` 將兩個元素都突出顯示為具有屬性“ type”的“ LOGIN”元素和具有屬性“ name”的“ RESET”元素。 ![XPath in Selenium WebDriver: Complete Tutorial](https://img.kancloud.cn/4a/fc/4afc748c4e55cdc67b28c0dfdc39dcdd_726x387.png "XPath in Selenium: Complete Guide") 在 AND 表達式中,使用了兩個條件,兩個條件都應該為 true 才能找到元素。 如果任何一個條件為假,它將無法找到元素。 ``` Xpath=//input[@type='submit' and @name='btnLogin'] ``` **在下面的表達式中,突出顯示“ LOGIN”元素,因為它同時具有屬性“ type”和“ name”。** [![XPath in Selenium WebDriver: Complete Tutorial](https://img.kancloud.cn/69/24/692472de65390ffc3d51d2f4ef1e8e66_600x398.png "XPath in Selenium: Complete Guide") ](/images/3-2016/032816_0758_XPathinSele9.png) ### 4)啟動功能: Starts-with 函數查找其屬性值的元素 刷新或網頁上的任何操作發生更改。 在此表達式中,匹配屬性的起始文本用于查找其屬性動態變化的元素。 您還可以找到其屬性值為靜態(不變)的元素。 例如-:假設特定元素的 ID 動態變化,例如: Id =“ message12” Id =“ message345” Id =“ message8769” 依此類推..但是初始文本是相同的。 在這種情況下,我們使用 Start-with 表達式。 在下面的表達式中,有兩個元素的 ID 以“消息”開頭(即,“用戶 ID 不能為空” &“密碼不能為空”)。 在下面的示例中,XPath 查找其“ ID”以“ message”開頭的那些元素。 ``` Xpath=//label[starts-with(@id,'message')] ``` [![XPath in Selenium WebDriver: Complete Tutorial](https://img.kancloud.cn/c2/fd/c2fd3c0a82b5dc628471bae443aa7a5f_947x461.png "XPath in Selenium: Complete Guide") ](/images/3-2016/032816_0758_XPathinSele10.png) ### 5)Text(): 在此表達式中,使用文本功能,我們找到具有完全文本匹配的元素,如下所示。 在我們的例子中,我們找到帶有文本“ UserID”的元素。 ``` Xpath=//td[text()='UserID'] ``` [![XPath in Selenium WebDriver: Complete Tutorial](https://img.kancloud.cn/9f/06/9f0612e5b1888787307cf796a73d334b_621x424.png "XPath in Selenium: Complete Guide") ](/images/3-2016/032816_0758_XPathinSele11.png) ### 6)XPath 軸方法: 這些 XPath 軸方法用于查找復雜或動態元素。 下面我們將看到其中一些方法。 為了說明這些 XPath 軸方法,我們將使用 Guru99 銀行演示站點。 ### a)以下: 選擇當前節點()文檔中的所有元素[用戶 ID 輸入框是當前節點],如下屏幕所示。 ``` Xpath=//*[@type='text']//following::input ``` ![XPath in Selenium WebDriver: Complete Tutorial](https://img.kancloud.cn/ff/15/ff1578f943cacca2cffde70eb913986d_768x360.png "XPath in Selenium: Complete Guide") 通過使用“跟隨”軸密碼,登錄和重置按鈕,可以匹配 3 個“輸入”節點。 如果要專注于任何特定元素,則可以使用以下 XPath 方法: ``` Xpath=//*[@type='text']//following::input[1] ``` 您可以根據需要通過輸入[1],[2]…………來更改 XPath。 輸入為“ 1”時,下面的屏幕快照將查找作為“密碼”輸入框元素的特定節點。 ![XPath in Selenium WebDriver: Complete Tutorial](https://img.kancloud.cn/35/0a/350a7458503ef324ef71b64c09d2fff2_749x436.png "XPath in Selenium: Complete Guide") ### b)祖先: 祖先軸選擇當前節點的所有祖先元素(祖父母,父母等),如以下屏幕所示。 在下面的表達式中,我們找到當前節點(“ ENTERPRISE TESTING”節點)的祖先元素。 ``` Xpath=//*[text()='Enterprise Testing']//ancestor::div ``` ![XPath in Selenium WebDriver: Complete Tutorial](https://img.kancloud.cn/d9/fc/d9fc69aed7e9d72b8e4c2ab6778943f4_1316x443.png "XPath in Selenium: Complete Guide") 通過使用“祖先”軸匹配的 13 個“ div”節點。 如果您想關注任何特定元素,則可以使用下面的 XPath,根據需要更改數字 1、2: ``` Xpath=//*[text()='Enterprise Testing']//ancestor::div[1] ``` 您可以根據需要通過輸入[1],[2]…………來更改 XPath。 ### c)兒童: 選擇當前節點(Java)的所有子元素,如下屏幕所示。 ``` Xpath=//*[@id='java_technologies']//child::li ``` ![XPath in Selenium WebDriver: Complete Tutorial](https://img.kancloud.cn/3a/aa/3aaa239e31c48e19f92e66a14156c985_1302x539.png "XPath in Selenium: Complete Guide") 通過使用“子”軸可以匹配 71 個“ li”節點。 如果要關注任何特定元素,則可以使用以下 xpath: ``` Xpath=//*[@id='java_technologies']/child::li[1] ``` 您可以根據需要通過輸入[1],[2]…………來更改 xpath。 ### d)之前: 如下屏幕所示,選擇當前節點之前的所有節點。 在下面的表達式中,它標識“ LOGIN”按鈕之前的所有輸入元素,即**用戶 ID** 和**密碼**輸入元素。 ``` Xpath=//*[@type='submit']//preceding::input ``` ![XPath in Selenium WebDriver: Complete Tutorial](https://img.kancloud.cn/c5/bf/c5bffc2738afeeb0871fc24dfa206eda_930x489.png "XPath in Selenium: Complete Guide") 通過使用“上一個”軸可以匹配 2 個“輸入”節點。 如果您想關注任何特定元素,則可以使用以下 XPath: ``` Xpath=//*[@type='submit']//preceding::input[1] ``` You can change the xpath according to the requirement by putting [1],[2]…………and so on. ### e)以下同級: 選擇上下文節點的以下同級。 兄弟姐妹與當前節點處于同一級別,如以下屏幕所示。 它將在當前節點之后找到元素。 ``` xpath=//*[@type='submit']//following-sibling::input ``` ![XPath in Selenium WebDriver: Complete Tutorial](https://img.kancloud.cn/1f/06/1f06d1ef617e6040837407762a406fc8_655x467.png "XPath in Selenium: Complete Guide") 一個輸入節點通過使用“跟隨兄弟”軸進行匹配。 ### f)父級: 選擇當前節點的父節點,如下屏幕所示。 ``` Xpath=//*[@id='rt-feature']//parent::div ``` ![XPath in Selenium WebDriver: Complete Tutorial](https://img.kancloud.cn/a7/b1/a7b150dd2b953953e36726a7ecdaac17_1318x511.png "XPath in Selenium: Complete Guide") 通過使用“父”軸匹配的 65 個“ div”節點。 如果您想關注任何特定元素,則可以使用以下 XPath: ``` Xpath=//*[@id='rt-feature']//parent::div[1] ``` You can change the XPath according to the requirement by putting [1],[2]…………and so on. ### g)自: 選擇當前節點或“自身”意味著它指示節點本身,如以下屏幕所示。 ![XPath in Selenium WebDriver: Complete Tutorial](https://img.kancloud.cn/19/eb/19eb68cb534047369d0bb434c744370a_905x375.png "XPath in Selenium: Complete Guide") 使用“ self”軸匹配一個節點。 它總是只找到一個節點,因為它代表了自我元素。 ``` Xpath =//*[@type='password']//self::input ``` ### h)后代: Selects the descendants of the current node as shown in the below screen. 在下面的表達式中,它標識當前元素(“主體環繞”框架元素)的所有元素后代,這意味著向下位于節點(子節點,孫子節點等)下。 ``` Xpath=//*[@id='rt-feature']//descendant::a ``` ![XPath in Selenium WebDriver: Complete Tutorial](https://img.kancloud.cn/0d/69/0d690e61e84079309dfc30058d0872b0_1230x454.png "XPath in Selenium: Complete Guide") 通過使用“后代”軸可以匹配 12 個“鏈接”節點。 如果您想關注任何特定元素,則可以使用以下 XPath: ``` Xpath=//*[@id='rt-feature']//descendant::a[1] ``` You can change the XPath according to the requirement by putting [1],[2]…………and so on. **摘要:** 需要 XPath 才能在網頁上查找元素,以便對該特定元素執行操作。 * XPath 有兩種類型: * **絕對 XPath** * **相對 XPath** * XPath 軸是用于查找動態元素的方法,否則通常的 XPath 方法無法找到 * XPath 表達式根據 XML 文檔中的 ID,Name,Classname 等屬性選擇節點或節點列表。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看