如何在Java中切换应用程序winappdriver

时间:2019-09-25 09:02:45

标签: java winappdriver

我想切换文件浏览器和Chrome浏览器。

如何切换应用程序?

在我的代码中

   @BeforeClass
    public static void setup() {
        try {
            DesiredCapabilities capabilities = new DesiredCapabilities();
            capabilities.setCapability("app", "C:\\Windows\\explorer.exe");
            ExplorerSession = new WindowsDriver(new URL("http://127.0.0.1:4723"), capabilities);
            ExplorerSession.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
            actions = new Actions(ExplorerSession);
            modules = new Modules(ExplorerSession);}

我可以生成新的会话吗?

我参考下一个链接

https://github.com/Microsoft/WinAppDriver/tree/v1.0#creating-a-desktop-session https://github.com/microsoft/WinAppDriver/blob/35a659232060a6e436cbb8393ae9a09bab12bc89/Samples/C%23/StickyNotesTest/StickyNotesSession.cs

但是我不能解决这个问题

Java信息不足。

也没有找到API文档。 请帮助我。

2 个答案:

答案 0 :(得分:0)

您将需要ChromeDriver和WindowsDriver的不同对象。 ChromeDriver对象将使用Selenium运行,WindowsDriver对象将使用WinAppDriver。我希望这有帮助。

答案 1 :(得分:0)

我通过使用OP中第一个链接中的信息来获取NativeWindowHandle并将其用于将焦点集中到每个应用程序,从而找到了解决此问题的方法。我必须将0x附加到应用程序返回的Handle的前面,以便将其传递给下一次测试中所需的功能,但是否则,链接中的说明对我来说效果很好。

    String NativeWindowHandle = driver.findElementByAccessibilityId("ShellForm").getAttribute("NativeWindowHandle");
    int natWinHandleInt = Integer.parseInt(NativeWindowHandle);
    String natWinHandleStr = Integer.toHexString(natWinHandleInt);
    natWinHandle = "0x"+natWinHandleStr;

    DesiredCapabilities appCapabilities = new DesiredCapabilities();
    appCapabilities.setCapability("appTopLevelWindow", natWinHandle);
    driver = new WindowsDriver<WindowsElement> (new URL("http://127.0.0.1:4723"), appCapabilities);