1

尝试使用 WinAppDriver 模拟(自动)通过 Outlook 发送电子邮件,“新电子邮件”元素被识别并打开新窗口,但在新窗口中“收件人”、“抄送”等控件无法识别。

我怀疑驱动程序无法使用新的 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.
4

3 回答 3

2

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

希望这可以帮助。

〜吉尔斯

于 2017-10-12T19:06:24.160 回答
0

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

    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability("app", "Root");
    driver = new WindowsDriver<>(new URL("http://127.0.0.1:4723"), capabilities);
于 2019-08-13T15:07:58.993 回答
0

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

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

当您有新窗口时,您必须将控件从一个窗口切换到另一个窗口。

于 2020-02-18T05:13:43.460 回答