使用Selenium WebDriver 處理Windows 檔案上傳
在Selenium WebDriver 中,處理檔案上傳可能很棘手,尤其是在彈出單獨視窗的情況下向上。本文提供了在不同 Web 上下文中上傳文件的解決方案,並解決了查找視窗句柄的問題。
問題陳述
使用Selenium WebDriver,您在上傳文件時遇到困難當出現單獨的視窗時,文件,類似於提供的螢幕截圖中描述的場景。
解決方案
在大多數情況下,要處理檔案上傳,您只需使用sendKeys 方法指定所需檔案的路徑。例如:
WebElement fileInput = driver.findElement(By.name("uploadfile")); fileInput.sendKeys("C:/path/to/file.jpg");
對於像 Zamzar 這樣的網站,這種簡單的方法應該沒有問題。然而,像 Uploadify 這樣涉及 Flash 物件的情況,情況變得更加複雜。
無 API 方法:使用 Robot 類別
因為 WebDriver 缺乏 API對於使用 Flash 物件或瀏覽器對話框,解決方法是使用 Robot 類別盲目鍵入檔案路徑。點選Flash元素觸發檔案瀏覽視窗後,可以模擬按鍵進入路徑:
driver.findElement(By.id("SWFUpload_0")).click(); Robot r = new Robot(); r.keyPress(KeyEvent.VK_C); // Example: Press the 'C' key
替代:修改Flash來源碼
更多進階解決方案涉及修改Flash 應用程式程式的原始碼以公開其內部方法,允許JavaScript 與它們互動。隨後,WebDriver 可以執行 JavaScript 命令來呼叫這些公開的方法並控製檔案上傳過程。
結論
使用 WebDriver 處理檔案上傳可以很簡單,也可以很複雜,取決於具體情況涉及的底層技術。透過了解這些技術,您可以有效地管理各種場景下的文件上傳。
以上是彈出單獨視窗時如何使用Selenium WebDriver上傳檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!