<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 9M WebDriver – 定位元素:第 3b 部分(`cssSelector`續) > 原文: [https://javabeginnerstutorial.com/selenium/9m-webdriver-locating-elements-3b/](https://javabeginnerstutorial.com/selenium/9m-webdriver-locating-elements-3b/) 嗨,忍者! 這篇文章是我們先前文章“[*9l WebDriver – 定位元素:第 3a 部分(由`cssSelector`提供)*](https://javabeginnerstutorial.com/selenium/9l-webdriver-locating-elements-3a/)”的延續。 。 在繼續進行操作之前,請確保對它進行了仔細的研究。 使用`cssSelector`定位器的最后兩種方法尚待討論: 1. 定位子元素 2. 按子字符串匹配 事不宜遲,讓我們開始行動吧! ## 定位子元素 也可以使用`cssSelectors`來定位子元素。 讓我們考慮一下 HTML 代碼, 錨標記是“`div`”的子元素。 要訪問子元素, *使用 ID:* ```java driver.findElement(By.cssSelector("div#child a")); ``` `#`代表“ID”,子元素標簽寫在空格后面。 *使用類別:* ```java driver.findElement(By.cssSelector("div.bg_main a")); ``` `.`代表“類” **示例**:讓我們在 Gmail 帳戶注冊頁面上找到名字文本框。 右鍵點擊“名字”文本框,然后選擇檢查元素,以獲取相應的 HTML 代碼,如下所示, ```java <label id="recovery-email-label"> <strong>Your current email address</strong> <input name="RecoveryEmailAddress" id="RecoveryEmailAddress" value="" spellcheck="false" type="text"> </label> ``` “標簽”標簽的子元素可以通過其`input`標簽和`name`屬性進行訪問。 *代碼:* ```java driver.findElement(By.cssSelector("label#recovery-email-label input[name='RecoveryEmailAddress']")); ``` 如果父元素具有**多個子元素**(例如下拉列表),并且它們沒有“`id`”或“`class`”或此類屬性來標識,則“`nth-of-type`”用于定位特定的子元素。 考慮一下 HTML 代碼, ```java <li>Cat</li> <li>Dog</li> <li>Birds</li> ``` 要標識子元素“狗”, *代碼:* ```java driver.findElement(By.cssSelector("ul#pets li:nth-of-type(2)")); ``` ## 按子字符串匹配 `cssSelectors`也幫助我們使用子字符串來定位元素。 ### 匹配前綴(或)開頭 為了匹配具有已知前綴的元素, **語法**:`driver.findElement(By.cssSelector(")tag_name[attribute^='prefix_value_of_attribute']"))` **解釋**:找到以給定前綴開頭的元素。 用“`^`”符號表示。 考慮以下代碼, ```java <input value="" name="LastName" id="LastName" spellcheck="false" type="text"> ``` 我們可以看到`input`標簽具有一個名為“`LastName`”的“`id`”屬性。 要找到此元素,我們可以指定查找以“`Last`”開頭的“`id`”屬性值。 *代碼:* ```java driver.findElement(By.cssSelector("input[id^='Last']")); ``` ### 匹配后綴(或)結尾 為了匹配具有已知后綴的元素, **語法**:`driver.findElement(By.cssSelector("tag_name[attribute$='suffix_value_of_attribute']"))` **說明**:找到以給定后綴結尾的元素。 用“`$`”符號表示。 Considering the below code, ```java <input name="PasswdAgain" id="PasswdAgain" type="password"> ``` 我們可以看到“`input`”標簽的“`name`”屬性為“`PasswdAgain`”。 要找到此元素,我們可以指定查找以“`Again`”結尾的“`name`”屬性值。 *代碼:* ```java driver.findElement(By.cssSelector("input[name$='Again']")); ``` ### 匹配一個子字符串 為了使元素與子字符串匹配, **語法**:`driver.findElement(By.cssSelector("tag_name[attribute*='substring_of_attribute_value']"))` **說明**:找到包含給定子字符串的元素。 用“`*`”符號表示。 Considering the below code, ```java <input name="PasswdAgain" id="PasswdAgain" type="password"> ``` 我們可以看到“`input`”標簽的“`name`”屬性為“`PasswdAgain`”。 要找到此元素,我們可以指定查找包含“`wdAg`”的“`name`”屬性值。 *代碼:* ```java driver.findElement(By.cssSelector("input[name*='wdAg']")); ``` ## 概覽 讓我們看一個測試用例,它實現了使用本方法和上一篇文章中介紹的`cssSelector`定位器的不同方法, **場景** 1. 打開 Firefox 瀏覽器。 2. 導航到 Google 帳戶創建頁面 3. 找到帶有 HTML 標簽和名稱屬性的“名字”文本框 4. 輸入“`testFirst`”作為名字 5. 在“姓氏”文本框中找到一個以子字符串開頭的值 6. 輸入“`testLast`”作為姓氏 7. 找到帶有 HTML 標簽,類型和名稱屬性的“創建密碼”文本框 8. 輸入“`Pass1234!`”作為密碼 9. 在“確認您的密碼”文本框中找到包含子字符串的值 10. 輸入“`Pass1234!`”作為確認密碼 11. 找到帶有 HTML 標簽和類別屬性的“手機”文本框 12. 輸入“`9496543210`”作為電話號碼 13. 使用子元素方法找到“當前電子郵件地址”文本框 14. 輸入“`...`” 15. 驗證“JUnit”窗格是否成功,并確認 Eclipse IDE 控制臺輸出屏幕 此方案的 JUnit 代碼是, ```java package com.blog.junitTests; import java.util.concurrent.TimeUnit; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; public class ElementLocatorTest3 { //Declaring variables private WebDriver driver; private String baseUrl; @Before public void setUp() throws Exception{ // Selenium version 3 beta releases require system property set up System.setProperty("webdriver.gecko.driver", "E:\\Softwares\\" + "Selenium\\geckodriver-v0.10.0-win64\\geckodriver.exe"); // Create a new instance for the class FirefoxDriver // that implements WebDriver interface driver = new FirefoxDriver(); // Implicit wait for 5 seconds driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); // Assign the URL to be invoked to a String variable baseUrl = "https://accounts.google.com/SignUp"; } @Test public void testPageTitle() throws Exception{ // Open baseUrl in Firefox browser window driver.get(baseUrl); // Locate 'First Name' text box by cssSelector: tag and name attribute // assign it to a variable of type WebElement WebElement firstName = driver.findElement(By.cssSelector("input[name='FirstName']")); // Clear the default placeholder or any value present firstName.clear(); // Enter/type the value to the text box firstName.sendKeys("testFirst"); //Locate 'Last Name' text box by cssSelector: begins with sub-string WebElement lastName = driver.findElement(By.cssSelector("input[id^='Last']")); lastName.clear(); lastName.sendKeys("testLast"); //Locate password text box by cssSelector: tag and type, name attributes WebElement pwd = driver.findElement(By.cssSelector("input[type='Password'][name='Passwd']")); pwd.clear(); pwd.sendKeys("Pass1234!"); //Locate 'Confirm your password' text box by cssSelector: contains sub-string WebElement confirmPwd = driver.findElement(By.cssSelector("input[name*='wdAg']")); confirmPwd.clear(); confirmPwd.sendKeys("Pass1234!"); // Locate Mobile phone text box by cssSelector: tag and class WebElement mobileNum = driver.findElement(By.cssSelector("input.i18n_phone_number_input-inner_input")); mobileNum.clear(); mobileNum.sendKeys("9496543210"); //Locate "current email address" text box by cssSelector: child element method WebElement recoveryEmail = driver.findElement(By.cssSelector("label#recovery-email-label input[name='RecoveryEmailAddress']")); recoveryEmail.clear(); recoveryEmail.sendKeys("[[email?protected]](/cdn-cgi/l/email-protection)"); } @After public void tearDown() throws Exception{ // Close the Firefox browser driver.close(); } } ``` *執行結果* 注釋清楚地提供給每行代碼,因此是不言自明的。 ![by cssSelector output](https://img.kancloud.cn/79/68/7968b0cb690de5d7af39a6fb9ad0a5a4_574x286.png) 在 JUnit 窗格中,綠色條顯示測試用例已成功執行。 另外,控制臺窗口中不會記錄任何錯誤。 下圖顯示了在 Firefox 瀏覽器中執行的最終輸出。 ![Browser output](https://img.kancloud.cn/d1/b2/d1b2d524223400ee2a9dbd30c945028f_638x577.png) 今天的忍者就這些了! 在另一篇文章中再見。 祝你有美好的一天!
                  <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>

                              哎呀哎呀视频在线观看