【问题标题】:Use WatiN for automation upload file on the website使用WatiN在网站上自动上传文件
【发布时间】:2010-06-15 07:52:34
【问题描述】:

我需要在网站上上传文件。 但是有一个问题,我不能在代码中自动选择文件。总是浏览器显示我选择文件窗口。 我的代码有什么问题?

IE ie = new IE("https://www.xxxx.com/WFrmlogin.aspx");
FileUploadDialogHandler uploadHandler = new FileUploadDialogHandler(@"D:\065-6405_URGENT.xls");

ie.WaitForComplete();
ie.TextField(Find.ById("txtUser")).TypeText("login");
ie.TextField(Find.ById("txtPassWord")).TypeText("***");

ie.Button(Find.ById("btnok")).Click();
ie.WaitForComplete();


ie.GoTo("https://www.orientspareparts.com/inq/WFrmUpOption.aspx");
ie.WaitForComplete();

ie.DialogWatcher.Clear();
ie.AddDialogHandler(uploadHandler);
// This code show choose file dialog
ie.FileUpload(Find.ById("FilUpload")).ClickNoWait();


ie.Button(Find.ById("butUpload")).Click();
ie.WaitForComplete();

【问题讨论】:

    标签: upload file-upload dialog watin


    【解决方案1】:

    我遇到了同样的问题。我正在使用类似 GMail 的上传过程,所以我想测试实际用例。仅在我的隐藏文件输入上设置 Text 属性不是一种选择。

    我最终使用 SendKeys 输入文件的路径,然后发送“{ENTER}”以提交对话框。

    SetForegroundWindow(browser.hWnd);
    SendKeys.SendWait("{ENTER}");
    Thread.Sleep(500); // An unfortunate necessity, to give the dialog time to pop up.
    SendKeys.SendWait(@"C:\myfile.jpg{ENTER}")
    

    我不喜欢这个解决方案,尤其不喜欢睡眠,但这是我在 30 分钟内能做的最好的事情。

    如果有人有更好的选择,请告诉我!

    【讨论】:

      【解决方案2】:

      为什么需要从对话框中进行选择?尝试只设置文本:

      ie.FileUpload(Find.ById("profile_file")).Text = "C:/Desktop/image.jpg";
      

      我猜你可能会和问这个问题的人谈谈: WatiN File Upload

      【讨论】:

        猜你喜欢
        • 2017-03-19
        • 2014-02-19
        • 2021-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-07
        • 1970-01-01
        相关资源
        最近更新 更多