<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 中的 JavaScriptExecutor 示例 > 原文: [https://www.guru99.com/execute-javascript-selenium-webdriver.html](https://www.guru99.com/execute-javascript-selenium-webdriver.html) ## 什么是 JavaScriptExecutor? JavaScriptExecutor 是一個接口,可幫助通過 Selenium Webdriver 執行 [JavaScript](/interactive-javascript-tutorials.html) 。 JavaScriptExecutor 提供了兩種方法“ executescript” &“ executeAsyncScript”以在所選窗口或當前頁面上運行 javascript。 ![Execute JavaScript based code using Selenium Webdriver](https://img.kancloud.cn/63/54/63543a7666b1b19ace3e41dddec8d85c_609x131.png "Execute JavaScript based code using Selenium Webdriver") 在本教程中,您將學習- * [什么是 JavaScriptExecutor?](#1) * [為什么我們需要 JavaScriptExecutor?](#2) * [JavaScriptExecutor 方法](#3) * [executeAsyncScript](#4) 的示例 * [示例 1:在被測瀏覽器中執行睡眠。](#5) * [executeScript](#6) 的示例 * 1)示例:單擊一個按鈕登錄并生成警報窗口 * [2)示例:捕獲抓取數據并導航到其他頁面](#8) * [3)示例:使用](#9)向下滾動 ## 為什么我們需要 JavaScriptExecutor? 在 Selenium Webdriver 中,使用諸如 XPath,CSS 等定位器來標識和執行 Web 頁面上的操作。 如果這些定位器不起作用,則可以使用 JavaScriptExecutor。 您可以使用 JavaScriptExecutor 在 Web 元素上執行所需的操作。 Selenium 支持 javaScriptExecutor。 不需要額外的插件或附件。 您只需在腳本中導入( **org.openqa.selenium.JavascriptExecutor** )即可使用 JavaScriptExecutor。 ## JavaScriptExecutor 方法 1. **executeAsyncScript** 使用異步腳本,頁面可以更快地呈現。 而不是強迫用戶在頁面呈現之前等待腳本下載。 此函數將在 Selenium 中當前選定的框架或窗口的上下文中執行異步 JavaScript。 這樣執行的 JS 是單線程的,具有各種同步運行的回調函數。 2. **executeScript** 此方法在 Selenium 中當前選定的框架或窗口的上下文中執行 JavaScript。 此方法中使用的腳本在匿名函數(沒有名稱的函數)的主體中運行。 我們還可以將復雜的參數傳遞給它。 該腳本可以返回值。 返回的數據類型為 * 布爾型 * Long * 串 * 清單 * WebElement。 JavascriptExecutor 的基本語法如下: **語法:** ``` JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript(Script,Arguments); ``` * 腳本–這是需要執行的 JavaScript。 * 參數–它是腳本的參數。 它是可選的。 ## executeAsyncScript 的示例 使用 executeAsyncScript,有助于提高測試性能。 它允許編寫測試更像是普通編碼。 execSync 阻止 Selenium 瀏覽器正在執行的其他操作,但是 execAsync 不阻止操作。 腳本完成后,它將向服務器端[測試](/software-testing.html)套件發送回調。 這意味著腳本中的所有內容都將由瀏覽器而不是服務器執行。 ### 示例 1:在被測瀏覽器中執行睡眠。 在這種情況下,我們將使用“ Guru99”演示站點來說明 executeAsyncScript。 在此示例中,您將 * 啟動瀏覽器。 * 打開網站“ [http://demo.guru99.com/V4/](http://demo.guru99.com/V4/) ”。 * 應用程序等待 5 秒鐘以執行進一步的操作。 **步驟 1)**使用 executeAsyncScript()方法捕獲等待 5 秒(5000 毫秒)之前的開始時間。 **步驟 2)**然后,使用 executeAsyncScript()等待 5 秒鐘。 **步驟 3)**然后,獲取當前時間。 **步驟 4)**減去(當前時間–開始時間)=經過時間。 **步驟 5)**驗證輸出應顯示超過 5000 毫秒 ``` import java.util.concurrent.TimeUnit; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.testng.annotations.Test; public class JavaSE_Test { @Test public void Login() { WebDriver driver= new FirefoxDriver(); //Creating the JavascriptExecutor interface object by Type casting JavascriptExecutor js = (JavascriptExecutor)driver; //Launching the Site. driver.get("http://demo.guru99.com/V4/"); //Maximize window driver.manage().window().maximize(); //Set the Script Timeout to 20 seconds driver.manage().timeouts().setScriptTimeout(20, TimeUnit.SECONDS); //Declare and set the start time long start_time = System.currentTimeMillis(); //Call executeAsyncScript() method to wait for 5 seconds js.executeAsyncScript("window.setTimeout(arguments[arguments.length - 1], 5000);"); //Get the difference (currentTime - startTime) of times. System.out.println("Passed time: " + (System.currentTimeMillis() - start_time)); } } ``` **輸出:**成功顯示了超過 5 秒(5000 毫秒)的經過時間,如下所示: ``` [TestNG] Running: C:\Users\gauravn\AppData\Local\Temp\testng-eclipse-387352559\testng-customsuite.xml log4j:WARN No appenders could be found for logger (org.apache.http.client.protocol.RequestAddCookies). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. Passed time: 5022 PASSED: Login =============================================== Default test Tests run: 1, Failures: 0, Skips: 0 =============================================== ``` ## executeScript 的示例 對于 executeScript,我們將一一看到三個不同的示例。 ### 1)示例:單擊一個按鈕登錄并使用 JavaScriptExecutor 生成警報窗口。 在這種情況下,我們將使用“ Guru99”演示站點來說明 JavaScriptExecutor。 在這個例子中 * 啟動網絡瀏覽器 * 打開站點“ [http://demo.guru99.com/V4/](http://demo.guru99.com/V4/) ”,然后 * 用憑證登錄 ![Execute JavaScript based code using Selenium Webdriver](https://img.kancloud.cn/ba/5e/ba5eaf265812f84b300e0acb6e8d25ce_409x157.png "Execute JavaScript based code using Selenium Webdriver") * 成功登錄后顯示警報窗口。 ``` import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import org.testng.annotations.Test; public class JavaSE_Test { @Test public void Login() { WebDriver driver= new FirefoxDriver(); //Creating the JavascriptExecutor interface object by Type casting JavascriptExecutor js = (JavascriptExecutor)driver; //Launching the Site. driver.get("http://demo.guru99.com/V4/"); WebElement button =driver.findElement(By.name("btnLogin")); //Login to Guru99 driver.findElement(By.name("uid")).sendKeys("mngr34926"); driver.findElement(By.name("password")).sendKeys("amUpenu"); //Perform Click on LOGIN button using JavascriptExecutor js.executeScript("arguments[0].click();", button); //To generate Alert window using JavascriptExecutor. Display the alert message js.executeScript("alert('Welcome to Guru99');"); } } ``` **輸出:**成功執行代碼時。 你會觀察 * 成功點擊登錄按鈕,然后 * 將顯示警報窗口(請參見下圖)。 [![Execute JavaScript based code using Selenium Webdriver](https://img.kancloud.cn/0f/19/0f19e2d347a550344a60980a4f3bb10b_1079x645.png "Execute JavaScript based code using Selenium Webdriver") ](/images/ccna/061516_1127_ExecuteJava3.png) ### 2)示例:使用 JavaScriptExecutor 捕獲抓取數據并導航到其他頁面。 執行以下硒腳本。 在這個例子中 * 啟動網站 * 獲取站點的詳細信息,例如站點的 URL,站點的標題名稱和域名。 * 然后導航到其他頁面。 ``` import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.testng.annotations.Test; public class JavaSE_Test { @Test public void Login() { WebDriver driver= new FirefoxDriver(); //Creating the JavascriptExecutor interface object by Type casting JavascriptExecutor js = (JavascriptExecutor)driver; //Launching the Site. driver.get("http://demo.guru99.com/V4/"); //Fetching the Domain Name of the site. Tostring() change object to name. String DomainName = js.executeScript("return document.domain;").toString(); System.out.println("Domain name of the site = "+DomainName); //Fetching the URL of the site. Tostring() change object to name String url = js.executeScript("return document.URL;").toString(); System.out.println("URL of the site = "+url); //Method document.title fetch the Title name of the site. Tostring() change object to name String TitleName = js.executeScript("return document.title;").toString(); System.out.println("Title of the page = "+TitleName); //Navigate to new Page i.e to generate access page. (launch new url) js.executeScript("window.location = 'http://demo.guru99.com/'"); } } ``` **輸出:**成功執行上述代碼后,它將獲取站點的詳細信息并導航到其他頁面,如下所示。 ![Execute JavaScript based code using Selenium Webdriver](https://img.kancloud.cn/11/70/1170dcb24f219d266a7e702e966d83a6_740x300.png "Execute JavaScript based code using Selenium Webdriver") ``` [TestNG] Running: C:\Users\gauravn\AppData\Local\Temp\testng-eclipse-467151014\testng-customsuite.xml log4j:WARN No appenders could be found for logger (org.apache.http.client.protocol.RequestAddCookies). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. Domain name of the site = demo.guru99.com URL of the site = http://demo.guru99.com/V4/ Title of the page = Guru99 Bank Home Page PASSED: Login =============================================== Default test Tests run: 1, Failures: 0, Skips: 0 =============================================== ``` ![Execute JavaScript based code using Selenium Webdriver](https://img.kancloud.cn/3d/e4/3de4f081cb9ab56c1cdac6c744ea7ad2_876x353.png "Execute JavaScript based code using Selenium Webdriver") ### 3)示例:使用 JavaScriptExecutor 向下滾動。 執行以下硒腳本。 在這個例子中 * 啟動網站 * 向下滾動 600 像素 ``` import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.testng.annotations.Test; public class JavaSE_Test { @Test public void Login() { WebDriver driver= new FirefoxDriver(); //Creating the JavascriptExecutor interface object by Type casting JavascriptExecutor js = (JavascriptExecutor)driver; //Launching the Site. driver.get("http://moneyboats.com/"); //Maximize window driver.manage().window().maximize(); //Vertical scroll down by 600 pixels js.executeScript("window.scrollBy(0,600)"); } } ``` **輸出**:執行上述代碼時,它將向下滾動 600 像素(請參見下圖)。 ![Execute JavaScript based code using Selenium Webdriver](https://img.kancloud.cn/39/c9/39c9034afeda2f6196ceefb59c6c2793_627x575.png "Execute JavaScript based code using Selenium Webdriver") **摘要:** 當 Selenium Webdriver 由于某些問題而無法單擊任何元素時,將使用 JavaScriptExecutor。 * JavaScriptExecutor 提供了兩種方法“ executescript” &“ executeAsyncScript”來處理。 * 使用 Selenium Webdriver 執行了 JavaScript。 * 說明了如果硒由于某些問題無法單擊元素時,如何通過 JavaScriptExecutor 單擊元素。 * 使用 JavaScriptExecutor 生成了“警報”窗口。 * 使用 JavaScriptExecutor 導航到其他頁面。 * 使用 JavaScriptExecutor 向下滾動窗口。 * 使用 JavaScriptExecutor 提取的 URL,標題和域名。
                  <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>

                              哎呀哎呀视频在线观看