c#selenium浏览和上传文件

时间:2013-09-18 05:22:40

标签: c# selenium

在我的selenium c#windows窗体应用程序中,我有一个上传doc / docx文件的方案。我已经在另一个案例中上传了。因为它有一些文本框在我使用

上传的浏览按钮前面
IWebElement element = driver.FindElement(By.Id("uploadhere"));
element.SendKeys("C:\\Some_Folder\\MyFile.txt");

但现在在我目前的情况下,我无法使用此代码。我的下图显示了上传文件对话框。我google了很多,找不到符合我需要的...我可以点击浏览按钮但不能选择一个文件。 Firebug和selenium IDE似乎没用..

任何人都可以帮我这个吗?任何评论都会非常感谢.. enter image description here

3 个答案:

答案 0 :(得分:2)

由于它是一个操作系统对话框,你无法用selenium处理它,你可以使用java脚本执行器 检查此链接 Webdriver: File Upload

答案 1 :(得分:-1)

我们无法通过Selenium处理windows fileOpenDialog。 我们必须使用Javascript执行器,但有些时候仍然无法使用Javascriptexecutor。它不会执行。它给出了空值错误。 示例:

如果您通过以下链接http://my.naukri.com/manager/createacc2.php?othersrcp=11499&wExp=N访问naukri.com 或

<input type="file" id="browsecv" name="browsecv"></input>

上传文件。

你的javascript和selenium不会识别浏览元素。

然后我们必须使用点位置等第三方工具来计算x&amp; “浏览文件”的Y坐标然后,我们可以使用C#.Net低级MouseClick手柄点击它或者我们可以使用AutoIt工具来处理wondows pop。 要了解更多信息,请访问

http://avinashpandeblogsonseleniumautomation.blogspot.in/2015/06/upload-file-using-selenium-web-driver.html您将通过示例获得解决方案。

答案 2 :(得分:-1)

我也在寻找第三方库,

除非没有其他窗口,否则这对我有用:

        string url = "http://nervgh.github.io/pages/angular-file-upload/examples/image-preview/";
        string path = @"C:\Users\File_Path";
        IWebDriver d = new ChromeDriver();
        d.Navigate().GoToUrl(url);
        d.FindElement(By.XPath("//input[@type='file']")).Click();
        Thread.Sleep(5000);
        System.Windows.Forms.SendKeys.SendWait(path);
        System.Windows.Forms.SendKeys.SendWait(@"{Enter}");

或仅针对最后一行

        System.Windows.Forms.SendKeys.SendWait("{Enter}");

在您的情况下,请勿将密钥直接发送到element。 添加使用System.Windows.Forms的引用;

然后

        d.FindElement(By.Id("uploadhere")).Click();
        System.Windows.Forms.SendKeys.SendWait(@"C:\Some_Folder\MyFile.txt");
        System.Windows.Forms.SendKeys.SendWait(@"{Enter}");

会工作的。