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

时间:2017-09-01 10:44:52

标签: outlook automation winappdriver

尝试使用WinAppDriver模拟(自动化)通过outlook发送电子邮件,识别“新电子邮件”元素并打开新窗口但在新窗口中无法识别“收件人”,“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.

3 个答案:

答案 0 :(得分:2)

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

希望这有帮助。

〜吉勒

答案 1 :(得分:0)

switchTo()。activeElement()对我不起作用,因此我必须创建一个新会话以与新电子邮件页面上的元素进行交互。希望这可以帮助其他与我有相同问题的人

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

答案 2 :(得分:0)

您必须编写将窗口从Outlook切换到新电子邮件的代码。

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

只要有新窗口,就必须将控件从一个窗口切换到另一个窗口。