如何在IE11中自动下载文件

时间:2016-05-26 17:53:48

标签: c# asp.net coded-ui-tests mshtml

如果版本为8或更低版本,可以使用以下代码自动执行文件下载并保存在IE中:

AutomateWinWindow objfileWindow;
AutomateWinWindow objfileSaveAs;

objfileWindow = new AutomateWinWindow("File Download", "#32770", "1", "File Download", "");
CodedUI_Automation.AutomateWinButton.AutomateWinButtonMethod(objfileWindow, "Save", "File Download", "Click");

objfileSaveAs = new AutomateWinWindow("Save As", "#32770", "1", "Save As", "");
templatesourcefile = ManageSaveAsWindow(objfileSaveAs, TemplateInputPath, offeringID, "Excel");            

但是对于最新版本,文件下载窗口不会出现。它作为一个小突然出现在没有任何名称和身份的下来。如果有人可以帮助我,那将是一个很好的帮助。

1 个答案:

答案 0 :(得分:1)

您提供的代码对我来说看起来不像普通的编码。还请提供AutomateWinWindow和ManageSaveAsWindow的类定义。

绝对可以处理文件的保存。我会推荐两件事。

  1. 您可以使用Coded UI工具中的检查器检查您要点击或操作的内容。

  2. 您可以使用Inspect工具之类的检查器。

  3. 通常我也建议使用唱片和播放只是为了看看它是什么,但似乎记录和播放不起作用(至少不在我的机器上)。

    使用内置的检查工具,我可以看到通知工具栏具有以下属性:

    ControlType: ToolBar
    TechnologyName: MSAA
    Name: Notification
    

    使用检查器中的导航箭头,您可以移动到子项或兄弟元素。

    我能够监视可用于保存文件的UISaveSplitButton。

    ControlType: SplitButton (important! not a button, but a split button)
    TechnologyName: MSAA
    Name: Save
    

    使用像CodedUI Fluent这样的搜索抽象(我写的东西,类似于CUITe),它看起来像:

    WinToolBar notificationBar = browserWindow.Find<WinToolBar>(WinToolBar.PropertyNames.Name, "Notification", PropertyExpressionOperator.EqualTo);
    
    WinSplitButton saveButton = notificationBar.Find<WinSplitButton>(WinButton.PropertyNames.Name, "Save", PropertyExpressionOperator.EqualTo);
    
    saveButton.Click();
    

    仅使用CodedUI,它看起来像这样(我更喜欢上述抽象的流畅搜索语法,但为了完整性):

    WinToolBar notificationBar = new WinToolBar(browserWindow);
    notificationBar.SearchProperties.Add(WinToolBar.PropertyNames.Name, "Notification", PropertyExpressionOperator.EqualTo);
    
    WinSplitButton saveButton = new WinSplitButton(notificationBar);
    saveButton.SearchProperties.Add(WinButton.PropertyNames.Name, "Save", PropertyExpressionOperator.EqualTo);
    
    Mouse.Click(saveButton);