我正在为UWP(通用Windows平台)编写一些用于自动化测试的代码,有时我需要等待某个元素。但是我遇到了以下问题:超时时间总是少于60秒(40〜60秒)。
函数调用:
waitForElementName(TimeSpan.FromSeconds(120).Seconds, "abcde");
功能
:protected static WindowsDriver<WindowsElement> desktopSession;
public static void waitForElementName(long timeout, string elementName)
{
WebDriverWait wait = new WebDriverWait(desktopSession, new TimeSpan(timeout));
wait.Until(ExpectedConditions.ElementIsVisible(OpenQA.Selenium.By.Name(elementName)));
}
在这种情况下,我要为元素等待120秒。但是总是在40到60秒内,超时中断,并且调试器附带以下消息:
消息:测试方法抛出异常: System.InvalidOperationException:找不到元素 使用给定搜索参数的页面。
谢谢!
答案 0 :(得分:0)
这对我有用,例如,您必须使用“ TimeSpan.FromSeconds(timeout)”将WindowsDriver与设置的超时一起传递给WebDriverWait。
protected static WindowsDriver<WindowsElement> desktopSession;
public static void waitForElementName(long timeout, string elementName)
{
WebDriverWait wait = new WebDriverWait(desktopSession,TimeSpan.FromSeconds(timeout));
wait.Until(ExpectedConditions.ElementIsVisible(OpenQA.Selenium.By.Name(elementName)));
}
我希望这会有所帮助。
谢谢
答案 1 :(得分:0)
我使用2个不同的驱动程序并更改了 timeout 和 ImplictlyWait()值来解决我的问题。
1-为了访问Windows元素,我声明了没有超时参数的驱动程序(如果不声明,默认超时为60秒),并将ImplictlyWait()设置为10秒:
protected static WindowsDriver<WindowsElement> desktopSession;
desktopSession = new WindowsDriver<WindowsElement>(new Uri(WindowsApplicationDriverUrl), desktopCapabilities);
desktopSession.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
2-对于WaitFor()方法,我声明驱动程序传递超时和ImplictlyWait值,例如以下代码:
public static void WaitForElementByName(TimeSpan timeout, string elementName)
{
WindowsDriver<WindowsElement> driver = new WindowsDriver<WindowsElement>(new Uri(WindowsApplicationDriverUrl), desktopCapabilities, timeout);
driver.Manage().Timeouts().ImplicitlyWait(timeout);
WebDriverWait wait = new WebDriverWait(driver, timeout);
wait.Until(ExpectedConditions.ElementIsVisible(OpenQA.Selenium.By.Name(elementName)));
}
希望对您有所帮助!