我们有一个使用CefSharp浏览器的WPF应用程序。该应用程序有一些wpf窗口,我们在其中嵌入CefSharp浏览器控件。我们遇到的问题是自动化问题。我们已经尝试过CUIT(Coded Ui Test)和Selenium - 没有人能够识别CefSharp浏览器中的控件。我们看到CUIT将CefSharp浏览器内容识别为图像。我们还尝试从封装它的用户控件中公开来自CefSharp的automationpeer。但是我们发现,CefSharp没有公开WPF的任何自动化操作 - 我们在尝试从CefSharp浏览器控件中获取automationpeer时返回null。我的问题是 - 是否可以为wpf控件中托管的CefSharp浏览器进行自动化?如果是,那么应该采用什么方法 - 任何特定的技术堆栈和/或对CefSharp浏览器控件的任何调整? 我们将VS 2015用于WPF应用程序和CefSharp.Wpf 49.0.1
答案 0 :(得分:2)
我已经通过以下步骤解决了问题(在WPF应用程序中自动化CEF #Embedded):
在托管嵌入式cef Web浏览器的.net应用程序(启动时)中定义调试端口:
var settings = new CefSettings { RemoteDebuggingPort = 8088 };
Cef.Initialize(settings);
在Protractor(就像Selenium - 另一个自动化工具,这是我最喜欢的)配置文件中,这个完整的调试地址“ip:port”应该在功能下定义
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应用程序并进入带有托管网络浏览器的屏幕
运行protractor configuration.js(这将运行用./tests.spec.js编写的测试)