我目前正在使用 WinAppDriver 将 UWP 应用程序的编码 UI 测试迁移到Appium,我遇到了这个问题,我等不及要显示一个元素。没有办法像 Microsoft 的 Coded UI Test 那样等待元素“准备好”。
在该ClassInitialize
方法中,一切正常(在登录视图中输入数据)并单击登录按钮。触发点击事件后,应用程序会显示一个进度条,直到用户登录。我的问题是登录过程后我无法等待组件。
我找到了一些代码片段,但是,它们似乎对我不起作用。这是我目前正在使用的扩展方法:
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
方法中被覆盖,这对我也不起作用。
[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
. 所以我想在测试继续之前等待“添加文档”按钮弹出。
如果有人有解决方案,我将不胜感激。谢谢!