未找到 WinAppDriver OutLook 新电子邮件元素

WinAppDriver OutLook New Email Elements not found

尝试使用 WinAppDriver 模拟(自动)通过 outlook 发送电子邮件,识别 "New E-mail" 元素并打开新的 window 但在新的 Window 上 "To" ,"CC" 等控件无法识别。

我怀疑驱动程序无法使用新的 windows 会话。

try {
    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setPlatform(Platform.WIN10);
    //capabilities.setCapability("appTopLevelWindow", "0xBB880A");
    capabilities.setCapability("app", "C:\Program Files\Microsoft Office\Office14\OUTLOOK.exe");
        outlookSession = new WindowsDriver(new URL("http://127.0.0.1:4723"), capabilities);
            outlookSession.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }

        newEmail = outlookSession.findElementByName("New E-mail");
        System.out.println("newEmail:::::: " + newEmail);
        newEmail.click();

        outlookSession.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);

        outlookSession.findElementByName("To").sendKeys("<email>"); (the 'To' element is not recognized.

我认为您遇到的问题是因为 Outlook 会为您的新电子邮件创建一个新的 Windows。这将导致 window 不属于您当前的会话。解决此问题的最佳方法可能是创建一个桌面会话,找到您的新 window,然后附加一个新会话,然后从那里控制您的新 window。

希望对您有所帮助。

~吉尔斯

switchTo().activeElement() 对我不起作用,所以我不得不创建一个新会话来与新电子邮件页面上的元素进行交互。希望这能帮助其他和我有同样问题的人

    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability("app", "Root");
    driver = new WindowsDriver<>(new URL("http://127.0.0.1:4723"), capabilities);

您必须编写将 window 从 outlook 切换到新电子邮件的代码。

            Thread.Sleep(TimeSpan.FromSeconds(5));
            var allWindowHandles1 = driver.WindowHandles;
            driver.SwitchTo().Window(allWindowHandles1[0]);

当你有新的 window 时,你必须将控件从一个 window 切换到另一个。