【问题标题】:C# Coded UI - How to open a pdf file from a link in a web pageC# Coded UI - 如何从网页中的链接打开 pdf 文件
【发布时间】:2018-03-19 19:52:51
【问题描述】:

在 Visual Studio 2017 中使用 Coded UI,如何从网页中的链接打开 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 文件的链接,但随后在网页的页脚中显示一条消息,显示打开或保存或取消 pdf 文件。

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

消息:测试方法 HandCodingWebApp1.CUITHandCoding.StartURL 抛出 例外:

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

无法对隐藏控件执行“单击”。

其他详细信息:技术名称:'MSAA' 名称:'Open'

ControlType: '按钮' --->

System.Runtime.InteropServices.COMException:来自 HRESULT 的异常:

0xF004F002

我该如何解决这个问题?

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

谢谢。

【问题讨论】:

  • 听起来不太平凡,但您似乎正在尝试单击一个不可见的按钮。可以发一下你的网页截图吗?
  • 您好 Francesco,我已在主要问题中添加了图片。录制和播放选项允许我打开和关闭 PDF 文件,这可能会帮助我解决问题。

标签: c# pdf visual-studio-2017 automated-tests coded-ui-tests


【解决方案1】:

不知道为什么它不适合你。 测试可能试图太快地单击控件。 尝试在此处插入:

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);

【讨论】:

  • 抱歉迟到了hyperionb。我将对此进行测试并返回。
  • 在点击文件之前添加一点等待时间已经解决了这个问题。谢谢hyperionb!
猜你喜欢
  • 1970-01-01
  • 2012-09-25
  • 1970-01-01
  • 1970-01-01
  • 2012-03-18
  • 2014-01-01
  • 1970-01-01
  • 2021-03-22
  • 1970-01-01
相关资源
最近更新 更多