簡體   English   中英

如何使用Selenium中的Windows上載對話框處理文件上載

[英]How to handle upload of file using Windows Upload Dialog in Selenium

我正在嘗試使用Selenium(C#)上傳附件。

在檢查站點的DOM后,我注意到附加文件的鏈接使用的是object tags 以下是HTML摘錄:

<object id="ctl00_mainContent_rauFilessilverlight03" class="ruObject" height="22px" type="application/x-silverlight-2" data="data:application/x-silverlight-2," style="width: 100%;"> 
 <param value="/App/somelongjunkyparameters" name="source"/> 
 <param value="true" name="windowless"/> <param value="transparent" name="background"/> 
 <param value="some number" name="minRuntimeVersion"/> 
 <param value="PostData=anotherlongjunkyparameters,SilverlightRowId=ctl00_mainContent_rauFilessilverlight03,AsyncUploadId=ctl00_mainContent_rauFiles,MultipleSelection=Disabled,AllowedFileExtensions=,ServiceHandlerUrl=/App/Telerik.Web.UI.WebResource type=rau,MaxFileSize=0" name="InitParams"/> 
 <param value="true" name="autoUpgrade"/> 
</object>

到目前為止,我已經嘗試過了:

IWebElement fileAttachTA = driver.FindElement(By.XPath("//object[@class='ruObject']"));
fileAttachTA.Click();
String filePath = "C:/User/My Documents/file.txt";

Selenium能夠找到對象,但是,我應該切換到Windows上載對話框嗎? 希望能從任何有經驗的人那里聽到。

謝謝!

我明白了,我所做的就是:

 IWebElement fileAttachTA = driver.FindElement(By.XPath("//object[@class='ruObject']"));
     fileAttachTA.Click();

     //Switch into the windows upload dialog
     SendKeys.SendWait("^a");
     Thread.Sleep(1000);
     SendKeys.SendWait(file);
     Thread.Sleep(1000);
     SendKeys.SendWait(@"{Enter}");
     Thread.Sleep(1000);

我使用System.Windows.Forms來使SendKeys.SendWait工作。 感謝大家!

無論開發網站的人是使用非標准機制上傳文件。 查看您提供的HTML,它看起來像某種Silverlight控件。 盡管Selenium WebDriver可以在頁面使用標准HTML上載機制(即<input type="file">元素)時正確處理用於上載文件的文件選擇對話框,但對於非標准上傳機制。 您需要找到一種方法來處理Selenium之外的對話框。

下載/上傳文件時,我在與Windows對話框交談時遇到了問題。 我的解決方案是利用user32.dll GetForegroundWindow()。 然后根據標題文本創建了一些等待對話框消失的等待方法(仍然使用user32.dll)。 然后最終創建了一個對BeginInvoke的操作,等待窗口彈出,然后繼續發送鍵。 現在沒有我前面的代碼示例,但是使用Google user32.dll Selenium,您會獲得一些信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM