WinAppDriver OutLook Новые элементы электронной почты не найдены

При попытке имитировать (автоматизировать) отправку электронной почты через outlook с помощью WinAppDriver, элемент "Новая электронная почта" распознается, и открывается новое окно, но в новом окне не распознаются элементы управления "Кому","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.

1 ответ

Решение

Я думаю, что проблема, с которой вы сталкиваетесь, связана с тем, что Outlook создаст новую Windows для вашей новой электронной почты. Это приведет к тому, что окно не будет частью вашей текущей сессии. Лучший способ решить эту проблему - это, вероятно, создать сеанс рабочего стола, найти новое окно, а затем присоединить новый сеанс и затем оттуда управлять новым окном.

Надеюсь это поможет.

~ Gilles

Switch To().activeElement() у меня не работал, поэтому мне пришлось создать новый сеанс для взаимодействия с элементами на новой странице электронной почты. Надеюсь, это поможет другим, у кого была такая же проблема, как у меня.

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

Вы должны написать код для переключения окна с Outlook на New email.

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

Когда у вас появляется новое окно, вы должны переключать управление с одного окна на другое.

Другие вопросы по тегам