WebDriverWait-UWP不考虑超时

时间:2018-06-19 14:22:31

标签: c# selenium-webdriver uwp

我正在为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:找不到元素   使用给定搜索参数的页面。

谢谢!

2 个答案:

答案 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)));
}

希望对您有所帮助!