<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 第一個 Selenium Webdriver 腳本:JAVA 代碼示例 > 原文: [https://www.guru99.com/first-webdriver-script.html](https://www.guru99.com/first-webdriver-script.html) 使用我們在上一個教程中創建的 [Java](/java-tutorial.html) 類“ myclass”,讓我們嘗試創建一個 WebDriver 腳本,該腳本將: 1. 獲取 Mercury Tours 的主頁 2. 驗證其標題 3. 打印比較結果 4. 在結束整個程序之前將其關閉。 ## WebDriver 代碼 以下是上述方案所呈現的邏輯的實際 WebDriver 代碼 注意:從 Firefox 35 開始,您需要使用 Mozilla 創建的 gecko 驅動程序才能使用 Web 驅動程序。 Selenium 3.0,gecko 和 firefox 具有兼容性問題,正確設置它們可能成為一項艱巨的任務。 如果代碼不起作用,請降級到 Firefox 47 或更低版??本。 或者,您可以在 Chrome 上運行腳本。 Selenium 可以直接用于 Chrome。 您只需要更改 3 行代碼即可使腳本與 Chrome 或 Firefox 一起使用 ``` package newproject; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; //comment the above line and uncomment below line to use Chrome //import org.openqa.selenium.chrome.ChromeDriver; public class PG1 { public static void main(String[] args) { // declaration and instantiation of objects/variables System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); //comment the above 2 lines and uncomment below 2 lines to use Chrome //System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); //WebDriver driver = new ChromeDriver(); String baseUrl = "http://demo.guru99.com/test/newtours/"; String expectedTitle = "Welcome: Mercury Tours"; String actualTitle = ""; // launch Fire fox and direct it to the Base URL driver.get(baseUrl); // get the actual value of the title actualTitle = driver.getTitle(); /* * compare the actual title of the page with the expected one and print * the result as "Passed" or "Failed" */ if (actualTitle.contentEquals(expectedTitle)){ System.out.println("Test Passed!"); } else { System.out.println("Test Failed"); } //close Fire fox driver.close(); } } ``` ## 解釋代碼 ## 導入包 首先,您需要導入以下兩個軟件包: 1. **org.openqa.selenium。*** -包含實例化加載了特定驅動程序的新瀏覽器所需的 WebDriver 類 2. **org.openqa.selenium.firefox.FirefoxDriver** -包含將 Firefox 特定的驅動程序實例化到由 WebDriver 類實例化的瀏覽器上所需的 FirefoxDriver 類 如果您的測試需要更復雜的操作,例如訪問另一個類,獲取瀏覽器屏幕截圖或操作外部文件,則肯定需要導入更多軟件包。 ## 實例化對象和變量 通常,這就是實例化驅動程序對象的方式。 ![First Selenium Webdriver Script: JAVA Code Example](https://img.kancloud.cn/77/ee/77ee8f0bbaa794f2a2301473f357de83_334x16.png "Creating your First Script in Webdriver").png) 沒有參數的 FirefoxDriver 類意味著默認的 Firefox 配置文件將由我們的 Java 程序啟動。 默認的 Firefox 配置文件類似于在安全模式下啟動 Firefox(不加載任何擴展程序)。 為了方便起見,我們將基本 URL 和期望的標題保存為變量。 ## 啟動瀏覽器會話 WebDriver 的 **get()**方法用于啟動新的瀏覽器會話,并將其定向到您指定為其參數的 URL。 ![First Selenium Webdriver Script: JAVA Code Example](https://img.kancloud.cn/51/e0/51e05c4e463cf2dc585ee0c6394886f8_166x19.png "Creating your First Script in Webdriver").png) ## 獲取實際的頁面標題 WebDriver 類具有 **getTitle()**方法,該方法始終用于獲取當前加載頁面的頁面標題。 ![First Selenium Webdriver Script: JAVA Code Example](https://img.kancloud.cn/3d/36/3d366cf81614154a056014ca8a27d334_256x12.png "Creating your First Script in Webdriver").png) ## 比較預期值和實際值 該部分代碼僅使用基本的 Java if-else 結構將實際標題與預期標題進行比較。 ![First Selenium Webdriver Script: JAVA Code Example](https://img.kancloud.cn/6b/85/6b8564929ec94c1ec702e377b6c4a7ba_378x88.png "Creating your First Script in Webdriver").png) ## 終止瀏覽器會話 “ **close()**”方法用于關閉瀏覽器窗口。 ![First Selenium Webdriver Script: JAVA Code Example](https://img.kancloud.cn/ea/55/ea55d0efc31875107400b6f39ad37373_119x13.png "Creating your First Script in Webdriver").png) ## 終止整個程序 如果使用此命令而不先關閉所有瀏覽器窗口,則整個 Java 程序將結束,而瀏覽器窗口保持打開狀態。 ![First Selenium Webdriver Script: JAVA Code Example](https://img.kancloud.cn/c8/5d/c85d37958bb6f8345cb0134331034bfb_117x13.png "Creating your First Script in Webdriver").png) ## 運行測試 在 Eclipse IDE 中有兩種執行代碼的方法。 1. 在 Eclipse 的菜單欄上,單擊 **Run > Run。** 2. 按 **Ctrl + F11** 運行整個代碼。 ![First Selenium Webdriver Script: JAVA Code Example](https://img.kancloud.cn/81/ea/81ea052b483a2c7506950269957d4f08_369x99.png "Creating your First Script in Webdriver").png) 如果一切正確,Eclipse 將輸出“ Test Passed!”。 ![First Selenium Webdriver Script: JAVA Code Example](https://img.kancloud.cn/07/cb/07cb05c8ffd07b18904ff6ce4a20bb73_177x115.png "Creating your First Script in Webdriver").png) ## 查找 GUI 元素 通過使用“ **findElement(By。*定位器*())**”方法來完成 WebDriver 中的元素定位。 代碼的“定位器”部分與這些教程的 Selenium IDE 章節中先前討論的任何定位器相同。 實際上,建議您使用 IDE 定位 GUI 元素,并在成功識別后將代碼導出到 webdriver。 這是一個通過元素 ID 定位元素的示例代碼。 Facebook 被用作基本 URL。 ``` package newproject; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class PG2 { public static void main(String[] args) { System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); String baseUrl = "http://www.facebook.com"; String tagName = ""; driver.get(baseUrl); tagName = driver.findElement(By.id("email")).getTagName(); System.out.println(tagName); driver.close(); System.exit(0); } } ``` 我們使用 **getTagName()**方法提取 ID 為“ email”的特定元素的標簽名稱。 運行時,此代碼應能夠正確識別標記名“ input”,并將其打印在 Eclipse 的 Console 窗口中。 ![First Selenium Webdriver Script: JAVA Code Example](https://img.kancloud.cn/fb/75/fb757e590dab816cd2dfa6502e830399_176x112.png "Creating your First Script in Webdriver").png) 元素匯總 | **變體** | **說明** | **樣本** | | 由。 **className** | 根據“ class”屬性的值查找元素 | findElement(By.className(“ someClassName”)) | | 由。 **cssSelector** | 根據驅動程序的基礎 CSS 選擇器引擎查找元素 | findElement(By.cssSelector(“ input#email”)) | | 由。 **id** | 通過元素的“ id”屬性值定位元素 | findElement(By.id(“ someId”)) | | 由。 **linkText** | 通過顯示的確切文本查找鏈接元素 | findElement(By.linkText(“ REGISTRATION”)) | | 由。 **名稱** | 通過“名稱”屬性的值定位元素 | findElement(By.name(“ someName”)) | | 由。 **partialLinkText** | 定位包含給定鏈接文本的元素 | findElement(By.partialLinkText(“ REG”)) | | 由。 **tagName** | 通過標簽名稱定位元素 | findElement(By.tagName(“ div”)) | | 由。 **xpath** | 通過 XPath 定位元素 | findElement(By.xpath(“ // html / body / div / table / tbody / tr / td [2] / table / tbody / tr [4] / td / table / tbody / tr / td [2] / table / tbody / tr [2] / td [3] / form / table / tbody / tr [5]“)) | ## 關于使用 findElement(By.cssSelector())的說明 **By.cssSelector()不支持“包含”功能**。 考慮下面的 Selenium IDE 代碼- ![First Selenium Webdriver Script: JAVA Code Example](https://img.kancloud.cn/74/16/7416b3f37e3945ae1d3526c64d70af94_379x373.png "Creating your First Script in Webdriver").png) 在上面的 Selenium IDE 中,整個測試通過了。 但是,在下面的 WebDriver 腳本中,同一測試產生了一個錯誤,因為在 By.cssSelector()方法中使用 WebDriver 時不支持“ contains”關鍵字。 ![First Selenium Webdriver Script: JAVA Code Example](https://img.kancloud.cn/9b/82/9b823213b1a95f0a07e4685b92ac356a_829x441.png "Creating your First Script in Webdriver").png) ## 常用命令 ## 實例化 Web 元素 不必每次訪問一個特定元素時都使用長的“ driver.findElement(By.locator())”語法,我們可以為其實例化一個 WebElement 對象。 WebElement 類包含在“ org.openqa.selenium。*”包中。 ![First Selenium Webdriver Script: JAVA Code Example](https://img.kancloud.cn/86/6d/866dc7060d498741c0f8f841fffb403c_505x52.png "Creating your First Script in Webdriver").png) ## 點擊一個元素 單擊可能是與 Web 元素交互的最常見方法**。 click()方法用于模擬任何元素的點擊。** 以下示例顯示如何使用 click()單擊 Mercury Tours 的“登錄”按鈕。 ![First Selenium Webdriver Script: JAVA Code Example](https://img.kancloud.cn/6b/b2/6bb2b80f4c5405245b8cdc767f9d403a_314x15.png "Creating your First Script in Webdriver").png) 使用 click()方法時,必須注意以下幾點。 * **它不接受任何參數/參數。** * 如果適用,方法**自動等待新頁面加載**。 * 要單擊的元素**必須可見**(高度和寬度不得等于零)。 ## 獲取命令 獲取命令獲取有關頁面/元素的各種重要信息。 這是您必須熟悉的一些重要的“獲取”命令。 | **get()** *用法示例:* | * 它會自動打開一個新的瀏覽器窗口,并獲取您在其括號內指定的頁面。 * 與 Selenium IDE 的“打開”命令相對應。 * 參數必須是 **字符串** 對象。 | | **getTitle()** *用法示例:* | * 不需要參數 * 獲取當前頁面的標題 * 刪除前導空格和尾隨空格 * 如果頁面沒有空白,則返回空字符串 標題 | | **getPageSource()** *用法示例:* | * 不需要參數 * 返回頁面的 **源代碼作為字符串值** | | **getCurrentUrl()** *用法示例:* | * 不需要參數 * 獲取代表瀏覽器正在查看的 **當前 URL** 的字符串 | | **getText()** *用法示例:* | * 獲取您指定的元素的 **內部文本** | ## 導航命令 這些命令使您可以刷新,進入以及在不同網頁之間來回切換。 | **navigation()。to()** *用法示例:* | * 它會自動 **打開一個新的瀏覽器窗口,并獲取您在其括號內指定的頁面** 。 * **它與 get()方法完全相同。** | | **navigation()。refresh()** *用法示例:* | * 不需要參數。 * 刷新當前頁面。 | | **navigation()。back()** *用法示例:* | * 不需要參數 * 使 **返回瀏覽器歷史記錄上的一頁** 。 | | **navigation()。forward()** *用法示例:* | * 不需要參數 * 使 **在瀏覽器歷史記錄上向前移一頁** 。 | ## 關閉和退出瀏覽器窗口 | **close()** *用法示例:* | * 不需要參數 * **它僅關閉 WebDriver 當前正在控制的瀏覽器窗口** 。 | | **quit()** *用法示例:* | * 不需要參數 * **它將關閉 WebDriver 打開的所有窗口。** | ![First Selenium Webdriver Script: JAVA Code Example](https://img.kancloud.cn/f5/26/f526b72d87c9ad7fe418740a46ae014e_430x295.png "Creating your First Script in Webdriver") 為了清楚地說明 close()和 quit()之間的區別,請嘗試執行以下代碼。 它使用的網頁會在頁面加載后自動彈出一個窗口,退出后又打開一個窗口。 ![First Selenium Webdriver Script: JAVA Code Example](https://img.kancloud.cn/4e/ed/4eed425c20c87b899e03e0da290914d0_411x101.png "Creating your First Script in Webdriver").png) 請注意,僅關閉了父瀏覽器窗口,而沒有關閉兩個彈出窗口。 ![First Selenium Webdriver Script: JAVA Code Example](https://img.kancloud.cn/07/fc/07fcce90e4fb7a16f092659c681f875d_633x344.png "Creating your First Script in Webdriver") 但是,如果您使用 quit(),則所有窗口都將關閉-而不僅僅是父窗口。 嘗試運行下面的代碼,您會發現上面的兩個彈出窗口也將自動關閉。 ``` package newproject; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class PG3 { public static void main(String[] args) { System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); driver.get("http://www.popuptest.com/popuptest2.html"); driver.quit(); // using QUIT all windows will close } } ``` ## 在框架之間切換 要訪問框架中的 GUI 元素,我們應該首先指示 WebDriver 首先關注框架或彈出窗口,然后才能訪問其中的元素。 讓我們以網頁 [http://demo.guru99.com/selenium/deprecated.html](http://demo.guru99.com/selenium/deprecated.html) 為例 ![First Selenium Webdriver Script: JAVA Code Example](https://img.kancloud.cn/89/5a/895aa0acd92d31e27893e3d4d96b1962_597x409.png "Creating your First Script in Webdriver") 此頁面有 3 個框架,其“名稱”屬性在上面指出。 我們希望訪問上面用黃色包圍的“已棄用”鏈接。 為此,我們必須首先指示 WebDriver 使用**“ switchTo()。frame()”** 方法切換到“ classFrame”幀。 我們將框架的名稱屬性用作“ frame()”部分的參數。 ``` package newproject; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class PG4 { public static void main(String[] args) { System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); driver.get("http://demo.guru99.com/selenium/deprecated.html"); driver.switchTo().frame("classFrame"); driver.findElement(By.linkText("Deprecated")).click(); driver.close(); } } ``` 執行此代碼后,您將看到“ classFrame”框架進入“ Deprecated API”頁面,這意味著我們的代碼已成功能夠訪問“ Deprecated”鏈接。 ## 在彈出窗口之間切換 與 Selenium IDE 不同,WebDriver 允許顯示彈出窗口(如警報)。 要訪問警報中的元素(例如它包含的消息),我們必須使用**“ switchTo()。alert()”** 方法。 在下面的代碼中,我們將使用此方法訪問警報框,然后使用**“ getText()”** 方法檢索其消息,然后使用**“ switchTo( ).alert()。accept()”** 方法。 首先,轉到 [http://jsbin.com/usidix/1](http://jsbin.com/usidix/1) ,然后手動單擊``開始!'' 按鈕,然后自己查看消息文本。 ![First Selenium Webdriver Script: JAVA Code Example](https://img.kancloud.cn/79/46/79460f210fb8632ae255d0a8933e01c0_483x210.png "Creating your First Script in Webdriver").png) 讓我們來看一下 WebDriver 代碼以執行此操作- ``` package mypackage; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class myclass { public static void main(String[] args) { System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); String alertMessage = ""; driver.get("http://jsbin.com/usidix/1"); driver.findElement(By.cssSelector("input[value=\"Go!\"]")).click(); alertMessage = driver.switchTo().alert().getText(); driver.switchTo().alert().accept(); System.out.println(alertMessage); driver.quit(); } } ``` 在 Eclipse 控制臺上,注意打印的警報消息是: ![First Selenium Webdriver Script: JAVA Code Example](https://img.kancloud.cn/2d/cd/2dcdc6ced04dca48843a49f9633ba497_220x85.png "Creating your First Script in Webdriver").png) ## 等待 有兩種等待。 1. 隱式等待-用于設置整個程序的默認等待時間 2. 顯式等待-僅用于設置特定實例的等待時間 ## 隱式等待 * 比“顯式等待”更容易編寫代碼。 * 它通常在代碼的實例化部分中聲明。 * 您只需導入一個附加軟件包。 要開始使用隱式等待,您必須將此包導入到代碼中。 ![First Selenium Webdriver Script: JAVA Code Example](https://img.kancloud.cn/31/ec/31ec261492f88b2bcd07c1025d5b7470_257x12.png "Creating your First Script in Webdriver").png) 然后在代碼的實例化部分上添加此代碼。 ![First Selenium Webdriver Script: JAVA Code Example](https://img.kancloud.cn/cc/c9/ccc9de2fb012e9ff77af007e3463eb0e_446x160.png "Creating your First Script in Webdriver").png) ## 顯式等待 **顯式等待使用 WebDriverWait 和 ExpectedCondition 類**完成。 對于下面的示例,在繼續執行下一個命令之前,我們將等待多達 10 秒鐘的時間,讓其 ID 為“ username”的元素可見。 步驟如下。 **步驟 1** 導入以下兩個軟件包: **![First Selenium Webdriver Script: JAVA Code Example](https://img.kancloud.cn/c0/b0/c0b00060913ed72f8fe7cabf7f25c870_453x27.png "Creating your First Script in Webdriver").png)** **步驟 2** 聲明一個 WebDriverWait 變量。 在此示例中,我們將使用“ myWaitVar”作為變量的名稱。 ![First Selenium Webdriver Script: JAVA Code Example](https://img.kancloud.cn/ab/39/ab3952e82496856cb7dd698882d34c49_449x164.png "Creating your First Script in Webdriver").png) **步驟 3** 在需要顯式等待發生的部分上,將 myWaitVar 與 ExpectedConditions 一起使用。 在這種情況下,我們將在“用戶名”(Mercury Tours 主頁)輸入上使用顯式等待,然后在其上鍵入文本“ tutorial”。 ![First Selenium Webdriver Script: JAVA Code Example](https://img.kancloud.cn/c9/ed/c9ed4d50038112a15af7fd49cef0db9c_655x29.png "Creating your First Script in Webdriver").png) ## 條件 在條件和循環操作中使用以下方法- * **isEnabled()**用于在執行命令之前要驗證某個元素是否已啟用的情況。 ![First Selenium Webdriver Script: JAVA Code Example](https://img.kancloud.cn/77/80/778069e623f0e58590d0cc0aab73661c_542x172.png "Creating your First Script in Webdriver").png) * **isDisplayed()**用于在執行命令之前要驗證是否顯示了某個元素的情況。 ![First Selenium Webdriver Script: JAVA Code Example](https://img.kancloud.cn/ae/66/ae66cc7b2729b0301de82c6c8e3aad09_505x61.png "Creating your First Script in Webdriver").png) * **isSelected()當您要驗證是否選中了**復選框,單選按鈕或下拉框**中的選項時,將使用**。 它不適用于其他元素。 ![First Selenium Webdriver Script: JAVA Code Example](https://img.kancloud.cn/18/cf/18cf6d8a30fe3dcede292d13d0255f25_471x81.png "Creating your First Script in Webdriver") ## 使用 ExpectedConditions ExpectedConditions 類提供了一組更廣泛的條件,您可以將這些條件與 WebDriverWait 的 until()方法結合使用。 以下是一些最常見的 ExpectedConditions 方法。 * **alertIsPresent()**-等待直到顯示警報框。 ![First Selenium Webdriver Script: JAVA Code Example](https://img.kancloud.cn/da/60/da60684f5faf86d48a935ac53ba5e5e4_562x51.png "Creating your First Script in Webdriver").png) * **elementToBeClickable()**-等待直到元素可見并同時啟用。 下面的示例代碼將等到 id =“ username”的元素變得可見并首先啟用,然后將該元素分配為名為“ txtUserName”的 WebElement 變量。 ![First Selenium Webdriver Script: JAVA Code Example](https://img.kancloud.cn/3f/ea/3fea6d691b5c8551357364cd0c8b4b64_488x47.png "Creating your First Script in Webdriver").png) * **frameToBeAvailableAndSwitchToIt()**-等待直到給定的幀已經可用,然后自動切換到該幀。 ![First Selenium Webdriver Script: JAVA Code Example](https://img.kancloud.cn/a6/1d/a61dd982fb49050a7393b603d08510dd_476x137.png "Creating your First Script in Webdriver").png) ## 捕捉異常 當使用 isEnabled(),isDisplayed()和 isSelected()時,WebDriver 假定該元素已存在于頁面上。 否則,它將拋出 **NoSuchElementException** 。 為了避免這種情況,我們應該使用 try-catch 塊,以便程序不會被中斷。 ``` WebElement txtbox_username = driver.findElement(By.id("username")); try{ if(txtbox_username.isEnabled()){ txtbox_username.sendKeys("tutorial"); } } catch(NoSuchElementException nsee){ System.out.println(nsee.toString()); } ``` 如果使用顯式等待,則應捕獲的異常類型為“ TimeoutException”。 ![First Selenium Webdriver Script: JAVA Code Example](https://img.kancloud.cn/20/da/20da26d6ba68d3e7c54ff8f2f8780bd1_578x153.png "Creating your First Script in Webdriver").png) ## 摘要 * 要開始使用 WebDriver API,必須至少導入這兩個軟件包。 * **org.openqa.selenium。*** * **org.openqa.selenium.firefox.FirefoxDriver** * **get()**方法等效于 Selenium IDE 的“打開”命令。 * 通過使用 **findElement()**方法在 WebDriver 中定位元素。 * 以下是用于在 WebDriver 中定位元素的可用選項: * 通過。 **className** * 通過。 **cssSelector** * 通過。 **ID** * 通過。 **linkText** * 通過。 **名稱** * 通過。 **partialLinkText** * 通過。 **tagName** * 通過。 **xpath** * By.cssSelector()**不支持**“包含” 功能。 * 您可以使用 **WebElement** 類實例化元素。 * 通過使用 **click()**方法來完成元素的單擊。 * WebDriver 提供了以下有用的 **get 命令**: * 得到() * getTitle() * getPageSource() * getCurrentUrl() * getText() * WebDriver 提供了這些有用的**導航命令** * navigation()。forward() * navigation()。back() * 導航() * navigation()。refresh() * close()和 quit()方法用于關閉瀏覽器窗口。 **Close()**用于關閉單個窗口; 而 **quit()**用于關閉與 WebDriver 對象正在控制的父窗口關聯的所有窗口。 * **switchTo()。frame()**和 **switchTo()。alert()**方法分別用于將 WebDriver 的焦點對準幀或警報。 * **隱式等待**用于設置整個程序的等待時間,而**顯式等待**僅用于特定部分。 * 驗證元素狀態時,可以使用 **isEnabled(),isDisplayed(),isSelected(),**以及 **WebDriverWait** 和 **ExpectedConditions** 方法的組合。 但是,它們不驗證元素是否不存在。 * 在元素不存在時調用 isEnabled(),isDisplayed()或 isSelected()時,WebDriver 將拋出 **NoSuchElementException** 。 * 在元素不存在時調用 WebDriverWait 和 ExpectedConditions 方法時,WebDriver 會拋出 **TimeoutException** 。 **注意:** driver.get():用于轉到特定網站,但它不維護瀏覽器的歷史記錄和 cookie,因此,我們不能使用前進和后退按鈕,如果單擊該按鈕,則頁面將無法獲得時間表 driver.navigate():它用于轉到特定的網站,但是它保留了瀏覽器歷史記錄和 cookie,因此在測試用例的編碼過程中,我們可以使用前進和后退按鈕在頁面之間導航
                  <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>

                              哎呀哎呀视频在线观看