<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # Sikuli 教程:如何將 Sikuli 與硒一起使用(示例) > 原文: [https://www.guru99.com/sikuli-tutorial.html](https://www.guru99.com/sikuli-tutorial.html) ## 什么是 Sikuli? Sikuli 是基于開源 GUI 的自動化工具。 它用于與網頁元素進行交互并處理基于窗口的彈出窗口。 它使用“圖像識別”技術與網頁和窗口彈出窗口的元素進行交互。 Sikuli 將網頁的所有元素視為圖像,并根據其圖像識別這些元素。 當 UI 元素穩定且不會不斷變化時,首選 Sikuli。 在本教程中,我們將學習 * [Sikuli 是什么?](#1) * [Sikuli 與硒 webdriver](#2) 集成 * Sikuli 中的[模式類](#3) * [使用 Sikuli](#4) 上傳文件的代碼示例 ## Sikuli 與 Selenium Webdriver 集成 可以使用 Sikuli JAR 文件將 Sikuli 與 Selenium Webdriver 集成。 以下序列是使用 Selenium Webdriver 配置 Sikuli 的步驟列表。 **步驟 1)從下面的 URL 下載** Sikuli JAR 文件。 [https://mvnrepository.com/artifact/com.sikulix/sikulixapi/1.1.0](https://mvnrepository.com/artifact/com.sikulix/sikulixapi/1.1.0) 將 ZIP 文件的內容提取到一個文件夾中。 **步驟 2)**在 Eclipse 中創建一個新的 JAVA 項目,并使用右鍵單擊該項目,連同 JAR 文件一起添加 JAR 文件以構建路徑->構建路徑->配置構建路徑 ![](https://img.kancloud.cn/f0/b1/f0b1dd707753293593b05d6e33767127_1023x668.png) 將 JAR 文件添加到項目構建路徑后,即可使用 Sikuli 提供的類。 ## 西庫里的屏幕課程 屏幕類是 Sikuli 提供的所有方法的基類。 Screen 類包含針對屏幕元素上所有常用操作的預定義方法,例如單擊,雙擊,向文本框提供輸入,懸停等。以下是 Screen 類提供的常用方法的列表。 | 方法 | 描述 | 句法 | | --- | --- | --- | | 請點擊 | 該方法用于使用圖像名稱作為參數單擊屏幕上的元素。 | Screen s = new Screen();s.click(“ QA.png”); | | 雙擊 | 此方法用于雙擊元素。 它接受圖像名稱作為參數。 | Screen s = new Screen();s.doubleClick(“ QA.png”); | | 類型 | 此方法用于向元素提供輸入值。 它接受要發送的圖像名稱和文本作為參數。 | s.type(“ QA.png”,“ TEXT”); | | 徘徊 | 此方法用于將鼠標懸停在元素上。 它接受圖像名稱作為參數。 | s.hover(“ QA.png”); | | 找 | 此方法用于在屏幕上查找特定元素。 它接受圖像名稱作為參數。 | s.find(“ QA.png”); | ## Sikuli 中的模式類 模式類用于將圖像文件與其他屬性相關聯,以唯一地標識元素。 它以圖像的路徑為參數。 模式 p =新模式(“圖像路徑”); 以下是 Pattern 類的最常用方法。 | 方法 | 描述 | 句法 | | --- | --- | --- | | getFileName | 返回 Pattern 對象中包含的文件名。 | 模式 p =新模式(“ D:\ Demo \ QA.png”);字符串文件名= p.getFileName(); | | 類似 | 此方法返回一個相似性設置為指定值的新 Pattern 對象。 它接受 0 到 1 之間的相似度值作為參數。 Sikuli 查找所有在指定相似范圍內的元素,并返回一個新的模式對象。 | 模式 p1 = p.similar(0.7f); | | 精確 | 此方法返回相似性設置為 1 的新模式對象。它僅查找指定元素的精確匹配。 | 模式 p1 = p.exact(); | ### 使用 Sikuli 上傳文件的代碼示例 下面的代碼說明了 Sikuli 在 Firefox 中用于文件上傳的用法。 ``` package com.sikuli.demo; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.sikuli.script.FindFailed; import org.sikuli.script.Pattern; import org.sikuli.script.Screen; import org.openqa.selenium.chrome.ChromeDriver; public class SikuliDemo { public static void main(String[] args) throws FindFailed { System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe"); String filepath = "D:\\Guru99Demo\\Files\\"; String inputFilePath = "D:\\Guru99Demo\\Files\\"; Screen s = new Screen(); Pattern fileInputTextBox = new Pattern(filepath + "FileTextBox.PNG"); Pattern openButton = new Pattern(filepath + "OpenButton.PNG"); WebDriver driver; // Open Chrome browser driver = new ChromeDriver(); driver.get("http://demo.guru99.com/test/image_upload/index.php"); // Click on Browse button and handle windows pop up using Sikuli driver.findElement(By.xpath(".//*[@id='photoimg']")).click(); s.wait(fileInputTextBox, 20); s.type(fileInputTextBox, inputFilePath + "Test.docx"); s.click(openButton); // Close the browser driver.close(); } } ``` **代碼說明:** **步驟 1)**第一條語句涉及為 chrome 設置驅動程序可執行路徑。 ``` System.setProperty("webdriver.chrome.driver", "D:\\ chromedriver.exe"); ``` **步驟 2)**使用屏幕截圖工具(例如 Snipping Tool)截取 Windows 彈出窗口“ FileTextBox”和“ Open”按鈕的屏幕截圖。 ![](https://img.kancloud.cn/1d/6a/1d6ae5a41d129dc29440585686dab99b_851x407.png) 這是您的屏幕截圖應如下所示:- ![](https://img.kancloud.cn/a8/0b/a80b4c0287ffc5a806b99fe64f6f0336_784x101.png) Windows 文件輸入文本框和打開按鈕的圖像存儲在“ FileTextBox.PNG”和“ OpenButton.PNG”上。 Sikuli 使用圖像識別技術來識別屏幕上的元素。 它僅根據圖像來查找屏幕上的元素。 示例:如果要自動執行打開記事本的操作,則需要將記事本的桌面圖標圖像存儲到 PNG 文件中并對其執行單擊操作。 在我們的情況下,它會識別文件輸入文本框,并使用存儲的圖像在 Windows 彈出窗口上打開按鈕。 **如果屏幕分辨率從圖像捕獲更改為測試腳本執行,則 Sikuli 的行為將不一致。 因此,始終建議以與捕獲圖像相同的分辨率運行測試腳本。 圖像像素大小的更改將導致 Sikuli 引發 FindFailed 異常。** **步驟 3)**接下來的語句包括為 Screen 和 Pattern 類創建對象。 創建一個新的屏幕對象。 將您要上載的文件的路徑設置為參數到 Pattern 對象。 ``` Screen s = new Screen(); Pattern fileInputTextBox = new Pattern(filepath + "FileTextBox.PNG"); Pattern openButton = new Pattern(filepath + "OpenButton.PNG"); ``` **步驟 4)**以下語句涉及使用 URL 打開 chrome 瀏覽器: [http://demo.guru99.com/test/image_upload/index.php](http://demo.guru99.com/test/image_upload/index.php) ``` driver = new ChromeDriver(); driver.get("http://demo.guru99.com/test/image_upload/index.php"); ``` 上面的 URL 是一個演示應用程序,用于演示文件上傳功能。 **步驟 5)**使用以下語句單擊選擇文件按鈕 ``` driver.findElement(By.xpath(".//*[@id='photoimg']")).click(); ``` **步驟 6)**等待窗口彈出。 Wait 方法用于處理與單擊瀏覽按鈕后彈出窗口相關的延遲。 ``` s.wait(fileInputTextBox, 20); ``` **步驟 7)**在輸入文件文本框中鍵入文件路徑,然后單擊“打開”按鈕 ``` s.type(fileInputTextBox, inputFilePath + "Test.docx"); s.click(openButton); ``` **步驟 8)**關閉瀏覽器 ``` driver.close(); ``` **輸出:** 最初,腳本會打開 Chrome 瀏覽器 ![](https://img.kancloud.cn/60/65/6065e85af6e1aaa2c69f604bd1168c0f_487x218.png) 單擊“選擇文件”按鈕,將出現 Windows 文件彈出屏幕。 在“文件輸入”文本框中輸入數據,然后單擊“打開”按鈕 ![](https://img.kancloud.cn/61/95/619539ef8d109ee25b3c04de96a6365a_1001x478.png) 文件上傳完成并關閉瀏覽器后,將顯示以下屏幕 ![](https://img.kancloud.cn/aa/3f/aa3f7a050dedce38d4243a4df94274c0_297x211.png) **結論:** Sikuli 用于輕松處理網頁上的 Flash 對象和 Windows 彈出窗口。 當用戶界面上的元素不經常更改時,最好使用 Sikuli。 由于這一缺點,從自動化測試的角度來看,與其他框架(例如 Robot 和 AutoIT)相比,Sikuli 的優先級較低。
                  <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>

                              哎呀哎呀视频在线观看