2016-11-30 18 views
3

我想發送字符串ABC到一個Windows文件對話框的輸入字段。通過此代碼行,我可以將焦點設置爲正確的元素。我看到一個閃爍的光標。SendKeys到一個Windows文件對話框

var filedialogOverlay = drv.SwitchTo().ActiveElement(); 

但是,以下代碼不會將字符串寫入元素。

Thread.Sleep(1000); 
filedialogOverlay.SendKeys("ABC"); 

編輯: 文件上傳提示是由一個網站,我想測試所示。由於黑盒測試,我看不到源代碼。有沒有分析GUI的工具?

當我右鍵單擊輸入元素時,我會得到以下選擇。

enter image description here

+0

如果您的意思是文件上傳提示像http://www.cumc.columbia.edu/it/howto/remote/img/dnuploadfile25.jpg,您的代碼將無法正常工作。 'drv.SwitchTo()。ActiveElement();'允許切換到您當前關注的元素,例如文本輸入字段與光標在裏面...要上傳文件,您需要將文件路徑發送到'元素 – Andersson

+1

ActiveElement()方法返回頁面中的活動元素,而不是文件對話。 Selenium不支持文件對話框,但它通過直接在文件路徑上調用''元素中的'Sendkeys'來支持文件上傳。 –

+1

@Florent B.你能給我看答案中的完整代碼嗎? – kame

回答

1

如果你需要上傳的文件,試圖發送路徑文件直接到相應的輸入字段:

drv.FindElement(By.XPath("//input[@type='file']")).SendKeys("ABC"); 

附:如果有對位於頁面文件上傳多個輸入字段,則可能需要更具體的XPath,像"//input[@id='some_specific_file_upload']" ...

+0

但是,我如何獲得輸入字段名稱?我的意思是從「Windows」標準的對話框覆蓋。 – kame

+0

要打開文件上傳提示你,顯然需要點擊按鈕,對不對?檢查該按鈕的'HTML',你會發現提到''元素 – Andersson

+0

我沒有機會看到代碼。我是黑盒測試儀。有沒有分析GUI的工具? – kame