Hello Everyone,
There is a requirement for automating C++ application which has CEF screens contains angular stuff, currently we are using WinAppDriver tool to automate desktop based application but that is supported to identify native desktop screens but CEF screens contain html DOM structure, we were unable to identify elements through WinAppDriver Inspect app. Need help or suggestion in automating C++ application which has screens using CEF technology. Any approach?
CEF actually has Chromium embedded framework. Here in our application communication is happening through this framework only and they have html DOM structure but that are accessed through C++ app instead of browser in our scenario.
We tried providing our .exe file in chrome options 'setBinay' method and able to launch our app through below code as chromium is being supported by chrome driver but it shows an Exception chrome is not reachable
Code snippet -
image
Result-
Starting ChromeDriver 104.0.5112.79 (3cf3e8c8a07d104b9e1260c910efb8f383285dc5-refs/branch-heads/5112@{#1307}) on port 19573
Only local connections are allowed.
Please see https://chromedriver.chromium.org/secur ... iderations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
Exception in thread "main" org.openqa.selenium.WebDriverException: chrome not reachable
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'HDLT1304', ip: '192.168.0.5', os.name: 'Windows 10', os.arch: 'x86', os.version: '10.0', java.version: '1.8.0_172'
Driver info: driver.version: ChromeDriver
remote stacktrace: Backtrace:
Ordinal0 [0x005978B3+2193587]
Ordinal0 [0x00530681+1771137]
Ordinal0 [0x00444070+802928]
Ordinal0 [0x004399D5+760277]
Ordinal0 [0x00465622+939554]
Ordinal0 [0x004613EF+922607]
Ordinal0 [0x0045EBC1+912321]
Ordinal0 [0x004923B0+1123248]
Ordinal0 [0x0049200A+1122314]
Ordinal0 [0x0048D5C6+1103302]
Ordinal0 [0x004677E0+948192]
Ordinal0 [0x004686E6+952038]
GetHandleVerifier [0x00840CB2+2738370]
GetHandleVerifier [0x008321B8+2678216]
GetHandleVerifier [0x006217AA+512954]
GetHandleVerifier [0x00620856+509030]
Ordinal0 [0x0053743B+1799227]
Ordinal0 [0x0053BB68+1817448]
Ordinal0 [0x0053BC55+1817685]
Ordinal0 [0x00545230+1856048]
BaseThreadInitThunk [0x74866359+25]
RtlGetAppContainerNamedObjectPath [0x76FB87D4+228]
RtlGetAppContainerNamedObjectPath [0x76FB87A4+180]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$errorHandler$0(W3CHandshakeResponse.java:62)
at org.openqa.selenium.remote.HandshakeResponse.lambda$getResponseFunction$0(HandshakeResponse.java:30)
at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:126)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:464)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:128)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:74)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213)
at org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:131)
at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:181)
at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:168)
at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:157)
at cucumber.Options.TestCl.main(TestCl.java:25)
Can you suggest any solution to overcome the same?