UI WPF 用户控件中托管的 CefSharp Wpf 浏览器自动化

UI Automation for CefSharp Wpf browser hosted in WPF usercontrol

我们有一个使用 CefSharp 浏览器的 WPF 应用程序。该应用程序有一些 wpf windows,我们在其中嵌入了 CefSharp 浏览器控件。我们 运行 遇到的问题是关于自动化的。我们已经尝试了 CUIT(编码 Ui 测试)和 Selenium - none 能够识别 CefSharp 浏览器中的控件。我们看到 CUIT 将 CefSharp 浏览器内容识别为图像。我们还尝试从 CefSharp 的 automationpeer 从包装它的用户控件中公开。然而,我们发现,CefSharp 没有为 WPF 公开任何自动化对等点——当我们试图从 CefSharp 浏览器控件中获取自动化对等点时,我们返回了 null。我的问题是 - 是否可以对托管在 wpf 控件内的 CefSharp 浏览器进行自动化?如果是,那么方法应该是什么 - 任何特定的技术堆栈 and/or 对 CefSharp 浏览器控件的任何调整? 我们将 VS 2015 用于 WPF 应用程序和 CefSharp.Wpf 49.0.1

我已经通过以下步骤解决了问题(在 WPF 应用程序中嵌入 CEF#):

在托管嵌入式 cef​​ 网络浏览器的 .net 应用程序(启动时)中定义调试端口:

 var settings = new CefSettings { RemoteDebuggingPort = 8088 };
 Cef.Initialize(settings);

在 Protractor(类似于 Selenium——另一种自动化工具,我最喜欢的)配置文件中,这个完整的调试地址 "ip:port" 应该定义在 capabilities

exports.config = {
    seleniumAddress: 'http://localhost:4444/wd/hub',
    specs: ['./tests.spec.js'],
    capabilities: {
        'browserName': 'chrome',
        'chromeOptions': {'debuggerAddress': "127.0.0.1:8088" } 

// debugger Address : An address of a Chrome debugger server to connect to, in the form of <hostname/ip:port>, e.g. localhost:8088

}}
  • 运行 .net 应用程序并使用托管网络浏览器进入屏幕

  • 运行 量角器 configuration.js(这将 运行 测试写入 ./tests.spec.js)