【发布时间】:2019-07-11 16:38:35
【问题描述】:
我目前正在使用 WinAppDriver 将 UWP 应用程序的编码 UI 测试迁移到 Appium,我遇到了这个问题,我等不及要显示一个元素。没有办法像 Microsoft 的 Coded UI Test 那样等待元素“准备好”。
在ClassInitialize 方法中一切正常(在登录视图中输入数据)并单击登录按钮。触发点击事件后,应用程序会显示一个进度条,直到用户登录。我的问题是登录过程后我无法等待组件。
我找到了一些代码 sn-ps,但是,它们似乎对我不起作用。这是我目前使用的扩展方法:
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 方法中被覆盖,这对我也不起作用。
Waiting for element before clicking with 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'按钮弹出。
如果有人有解决方案,我将不胜感激。 谢谢!
【问题讨论】:
标签: selenium uwp appium coded-ui-tests winappdriver