【问题标题】:Can WatiN download files without requiring focus?WatiN 可以下载文件而不需要关注吗?
【发布时间】:2011-04-01 21:51:20
【问题描述】:

我使用 WatiN 自动向/从多个网站传输文件(EDI 交易),不幸的是,FTP 或任何更自动化的工具都不是一个选项。对于下载,我使用此示例的变体:

FileDownloadHandler download = new FileDownloadHandler(fullFilename);
using (new UseDialogOnce(ie.DialogWatcher, download))
{
    lnkFile.ClickNoWait();

    download.WaitUntilFileDownloadDialogIsHandled(15);
    download.WaitUntilDownloadCompleted(150);
}

这很好用,唯一的问题是它需要焦点。下载几十个文件可能需要一段时间才能完成的情况并不少见。我在远程会话中运行它,因此我的机器不会无法使用,但如果有任何方法可以消除对焦点的需求,它会很方便。

【问题讨论】:

  • 你能解释一下 lnkFile 应该是什么吗?谢谢!
  • lnkFile 是一个链接,在这种情况下需要单击以启动文件下载。假设您的 WatiN.Core.IE 实例被称为 ie,您可以将 lnkFile 实例化为: lnkFile = ie.Link(Find.ById("download"));
  • 我已经按照您的建议设置了一个链接文件,但它仍然无法在 IE9 中下载该文件。还有其他想法吗?我应该在我的链接文件中使用“下载”以外的东西吗?谢谢!
  • 我有一段时间没有使用 WatiN,但我看到邮件列表电子邮件说文件下载在 IE9 中无法正常工作。

标签: c# automation focus download watin


【解决方案1】:

我会使用 WebClient 类而不是 Watin。 http://msdn.microsoft.com/en-us/library/system.net.webclient.aspx

应该能够使用该类上传和下载文件。

【讨论】:

  • 我只是查看了这个,但似乎找不到任何处理文件下载对话框的方法 - DownloadFile 方法可以正常工作,但网站上提供的下载链接不是文件的直接链接.
  • 哦,链接触发了一些 JS,您需要采取进一步措施吗?这确实使事情变得相当复杂。
  • 是的,很遗憾就是这样。 WatiN 对于我的所有目的来说都非常通用,它只是焦点的小问题。
  • 我认为你可以使用 watin 注入 javascript,那么你可以注入一些东西来将焦点设置在你需要的控件上吗?
  • 我可能可以更好地措辞这个问题 - 问题不是 WatiN 不会专注于下载文件所需的控件,而是它确实需要专注于下载文件并绑定转移期间的机器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-17
  • 1970-01-01
  • 2017-01-28
相关资源
最近更新 更多