C# 编码 UI - 如何从网页中的 link 打开 pdf 文件

C# Coded UI - How to open a pdf file from a link in a web page

使用 Coded UI in Visual Studio 2017,如何从网页中的 link 打开 pdf 文件?

这是我写的代码段:

// Click on "View our documents" link
        BrowserWindow browser2 = BrowserWindow.Launch(url);
        browser2.Maximized = true;
        UITestControl rpQ3FinReport = new UITestControl(browser2);
        rpQ3FinReport.TechnologyName = "Web";
        rpQ3FinReport.SearchProperties.Add("ControlType", "Hyperlink");
        rpQ3FinReport.SearchProperties.Add("InnerText", "2017 Q3 Financial Report");
        Mouse.Click(rpQ3FinReport);

        // Open the pdf report 
        UITestControl rpQ3FinReportPDFOpen = new UITestControl(browser2);
        rpQ3FinReportPDFOpen.TechnologyName = "MSAA";
        rpQ3FinReportPDFOpen.SearchProperties.Add("ControlType", "Button");
        rpQ3FinReportPDFOpen.SearchProperties.Add("Name", "Open");

        Mouse.Click(rpQ3FinReportPDFOpen);

        Playback.Wait(3000);

上面的 rpQ3FinReport 代码单击包含 PDF 文件的 link,但随后在网页的页脚中出现一条消息,要求打开或保存或取消 pdf 文件。

我找到了用于打开的对象 属性 信息并使用 rpQ3FinReportPDFOpen 打开 PDF,但是错误消息 指出:

Message: Test method HandCodingWebApp1.CUITHandCoding.StartURL threw exception:

Microsoft.VisualStudio.TestTools.UITest.Extension.FailedToPerformActionOnHiddenControlException:

Cannot perform 'Click' on the hidden control.

Additional Details: TechnologyName: 'MSAA' Name: 'Open'

ControlType: 'Button' --->

System.Runtime.InteropServices.COMException: Exception from HRESULT:

0xF004F002

如何解决这个问题?

我附上了网页的图片。请注意,我不得不从页面中删除一些可识别的部分。

谢谢。

不确定为什么它对您不起作用。 测试可能尝试过快地单击控件。 尝试在此处插入:

openButton.WaitForControlExists();
Playback.Wait(150);
Mouse.Click(openButton);

它会等待控件启用,然后单击它。 150ms的等待时间是因为程序可能又太快了。

此外,您的代码对我来说很好用。 (与您的代码相同,但 BrowserWindow 中没有 url 定义,也没有单击超链接):

BrowserWindow browserWindow = new BrowserWindow();

// Open the pdf report 
UITestControl openButton = new UITestControl(browserWindow);
openButton.TechnologyName = "MSAA";
openButton.SearchProperties.Add("ControlType", "Button");
openButton.SearchProperties.Add("Name", "Open");
Mouse.Click(openButton);

您也可以在这里尝试我自己定义 browserWindow 控件的地方:

UITestControl browserWindow = new UITestControl();
BrowserWindow.TechnologyName = "MSAA";
BrowserWindow.SearchProperties.Add("ControlType", "Window");
BrowserWindow.SearchProperties.Add("ClassName", "IEFrame");

// Open the pdf report 
UITestControl openButton = new UITestControl(BrowserWindow);
openButton.TechnologyName = "MSAA";
openButton.SearchProperties.Add("ControlType", "Button");
openButton.SearchProperties.Add("Name", "Open");

Mouse.Click(openButton);