В настоящее время я переносю свои тесты кодированного пользовательского интерфейса для приложения UWP в Appium, используя WinAppDriver , и я столкнулся с проблемой, которая заключается в том, что я не могу дождаться появления элемента. Нет никакого способа ждать, пока элемент будет «готов», как это сделал тест Coded UI от Microsoft.
В методе ClassInitialize
все работает нормально (данные вводятся в окне входа в систему) и нажимается кнопка входа в систему. После запуска события click приложение показывает индикатор выполнения, пока пользователь не вошел в систему. Моя проблема в том, что я не могу дождаться компонентов после процесса входа в систему.
Я нашел несколько фрагментов кода, однако они мне не подходят. Вот метод расширения, который я сейчас использую:
public static IWebElement WaitForElement(this IWebDriver driver, By by, int timeoutInSeconds)
{
if (timeoutInSeconds > 0){
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(timeoutInSeconds);
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
return wait.Until(ExpectedConditions.ElementIsVisible(by));
}
return driver.FindElement(by);
}
Я также прочитал, что неявное время ожидания для драйвера Windows должно быть установлено:
session = new WindowsDriver<WindowsElement>(new Uri(WindowsApplicationDriverUrl), appCapabilities);
session.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(60);
и переопределено в методе WaitForElement
, который также не работает для меня.
Ожидание элемента перед нажатием WinAppDriver
[TestMethod]
public void UploadDocuments()
{
var UploadButton = session.WaitForElement(By.XPath("//Button[@AutomationId='AddDocument']"), 60);
UploadButton.Click();
session.FindElementByXPath("//ToolbarWindow32[@AutomationId='1001']").SendKeys(Keys.Control + "a");
session.FindElementByXPath("//ToolbarWindow32[@AutomationId='1001']").SendKeys(testFilesFolder);
//session.FindElementByName("Open").Click();
}
Обычно тест завершается сбоем в первой строке после завершения ClassInitialize
. Поэтому я хотел бы подождать, пока кнопка «AddDocument» не появится, прежде чем продолжить тест.
Если у кого-то есть решение, я буду признателен за помощь.
Спасибо!