在Visual Studio 2017中使用Coded UI如何从网页链接打开PDF文件?
在Visual Studio 2017的Coded UI中点击网页链接打开PDF的解决方案
首先,你已经搭好了基础的代码框架,我来帮你完善细节并说明关键要点:
1. 完善链接定位与点击代码
你的代码已经在尝试定位网页超链接,但InnerText的搜索属性需要补全。假设目标链接的完整显示文本是“查看我们的文档”,可以这样补全代码:
// 启动浏览器并导航到目标URL BrowserWindow browser2 = BrowserWindow.Launch(url); browser2.Maximized = true; // 定位"查看我们的文档"超链接 UITestControl rpQ3FinReport = new UITestControl(browser2); rpQ3FinReport.TechnologyName = "Web"; rpQ3FinReport.SearchProperties.Add("ControlType", "Hyperlink"); // 补全InnerText属性,确保精准定位到目标链接 rpQ3FinReport.SearchProperties.Add("InnerText", "查看我们的文档"); // 执行点击操作 Mouse.Click(rpQ3FinReport);
2. 处理PDF打开后的识别逻辑
点击链接后,PDF通常会以两种形式打开:浏览器内嵌窗口或独立PDF阅读器(比如Adobe Acrobat),针对不同场景可以这样处理:
浏览器内嵌PDF:如果PDF在新标签页打开,可通过
BrowserWindow.Find定位新窗口:// 等待新标签页加载(可根据实际加载速度调整等待时长) Playback.Wait(3000); // 通过标题关键字定位PDF窗口 BrowserWindow pdfWindow = BrowserWindow.Find(new PropertyExpressionCollection( new PropertyExpression(BrowserWindow.PropertyNames.Name, "PDF文档标题关键字", PropertyExpressionOperator.Contains) ));独立PDF阅读器窗口:以Adobe Acrobat为例,定位外部阅读器窗口:
Playback.Wait(3000); Window pdfReaderWindow = new Window(); pdfReaderWindow.SearchProperties.Add("Name", "Adobe Acrobat"); pdfReaderWindow.SearchProperties.Add("ClassName", "AcrobatSDIWindow");
3. 关键注意事项
- 合理添加等待:避免页面未加载完成就执行操作,推荐用更智能的等待方法替代固定时长等待:
// 等待链接控件加载完成,超时时间10秒 if (rpQ3FinReport.WaitForControlExist(10000)) { Mouse.Click(rpQ3FinReport); } else { Console.WriteLine("未找到目标链接,请检查定位属性"); } - 优化搜索属性:如果
InnerText不够唯一,可以补充Id、TagName等属性提升定位准确性:rpQ3FinReport.SearchProperties.Add("Id", "document-link-id");
内容的提问来源于stack exchange,提问作者Sohel
相关产品推荐
相关产品推荐

