2017-08-05 40 views
3

我们有一个WPF应用程序,我们正在使用CefSharp浏览器。该应用程序有一些wpf窗口,我们在其中嵌入了CefSharp浏览器控件。我们遇到的问题是关于自动化。我们已经尝试了CUIT(编码Ui测试)和Selenium - 无法识别CefSharp浏览器内的控件。我们看到CUIT将CefSharp浏览器内容识别为图像。我们还尝试从包装它的用户控件中公开CefSharp的automationpeer。然而,我们发现,CefSharp并没有公开任何WPF的自动更新功能 - 当我们尝试从CefSharp浏览器控件中获取自动更新时,我们得到了空值。我的问题是 - 是否有可能为位于wpf控件内的CefSharp浏览器执行自动化操作?如果是,那么应该采取什么方法 - 任何特定的技术堆栈和/或对CefSharp浏览器控件的任何调整? 我们使用VS 2015 WPF应用程序和CefSharp.Wpf 49.0.1用于在WPF中托管的CefSharp Wpf浏览器的UI自动化usercontrol

+0

嗨Koushik,你能解决这个问题吗?如果是的话,请让我知道你是如何实现这一点的,我也面临同样的问题。 –

回答

1

我已经采取以下措施解决了这个问题(CEF自动化#在WPF应用程序嵌入式):

定义调试端口.NET应用程序(在启动时)托管嵌入式CEF网页浏览器:

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

在量角器(它像硒 - 另一种自动化的工具,这是我最喜欢的)配置文件,这个完整的调试地址“IP:端口”应根据能力定义

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测试)

+0

如果您的自动化脚本与您的应用程序在同一台计算机上运行,​​并且CEF#在本地托管,则此方法有效。 –