硒“未知错误”随机发生

时间:2018-01-03 09:36:16

标签: c# selenium

我正在使用Selenium搜索元素并单击它们(localhost网站),有时代码运行完美,有时我会在网站加载或加载后立即收到错误。 错误:

  

“消息:System.InvalidOperationException:未知错误:元素<span _ngcontent-c8="" class="ui-link-button" fxlayout="row" fxlayoutalign="start center" ng-reflect-klass="ui-link-button" ng-reflect-ng-class="[object Object]" ng-reflect-layout="row" ng-reflect-align="start center" style="flex-direction: row; box-sizing: border-box; display: flex; max-height: 100%; place-content: center flex-start; align-items: center;">...</span>在点(219,113)处无法点击。其他元素将收到点击:<ui-spinner _ngcontent-c0="" _nghost-c1="">...</ui-spinner>
        (会话信息:chrome = 63.0.3239.84)         (司机信息:chromedriver = 2.34.522940
   (1a76f96f66e3ca7b8e57d503b4dd3bccfba87af1),platform = Windows NT 10.0.14393 x86_64)“

我的驱动程序隐式等待60秒,所以我不认为它因为网站加载速度不够快。

   public class Driver
    {
        public static IWebDriver driver { get; set; }

        public static void WaitForElementUpTo(int seconds = 60)
        {
            driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(seconds));
        }
    }

我正在使用Chrome驱动程序。

3 个答案:

答案 0 :(得分:0)

尝试使用显式等待棒等待元素可点击

答案 1 :(得分:0)

    if (intent != null && intent.getAction() != null) {

        if (intent.getAction().equalsIgnoreCase(UtilAlarmConstants.ALARM_ACTION)) {

            setUpNotification(context, intent);}

这表示您有一个加载微调器阻止点击您的元素。正如其他人所建议的那样,使用明确的等待:

 Other element would receive the click: <ui-spinner _ngcontent-c0="" _nghost-c1="">...</ui-spinner>

答案 2 :(得分:0)

最后我使用了这个函数来等待微调器不再存在,然后继续这个场景:

    WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(60));
    wait.Until<bool>((d) =>
    {
        try
        {
            IWebElement element1 = d.FindElement(By.CssSelector(element));
            return false;
        }
        catch (NoSuchElementException)
        {
            return true;
        }
    });
}