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]);
Когда у вас появляется новое окно, вы должны переключать управление с одного окна на другое.