首页 > 解决方案 > Selenium C# ImplicitWait 不会等待元素加载

问题描述

我创建了一个自定义方法来隐式等待元素加载,然后我在自定义 click 方法中使用它,如下所示:

public static void WeElementToBeClickable(this IWebElement element, int sec = 10)
{
    var wait = new WebDriverWait(Driver.Browser(), TimeSpan.FromSeconds(sec));
    wait.Until(ExpectedConditions.ElementToBeClickable(element));     
}

public static void WeClick(this IWebElement element, int sec = 10)
{
    element.WeElementToBeClickable();
    element.Click();
}

然后我将它附加到我单击的任何元素上,以确保它始终轮询 DOM 以确保元素已加载,但它似乎并没有等待某些特定元素加载。

我正在搜索这个元素:

<span class="button add fr" onclick="GoToHash('/ContractorCommon/Contractor/ContractorAdd', null, 'Contractor'); "><span class="icon-add"></span> Contractor</span>

public IWebElement AddContractorIcon => Driver.FindElement(By.XPath("//span[@class='button add fr']"));

但它总是立即发出以下异常:

OpenQA.Selenium.NoSuchElementException : no such element: Unable to locate element: {"method":"xpath","selector":"//span[@class='button add fr']"}

我已经尽一切努力让它等待这个元素加载,但我似乎无法弄清楚。奇怪的是,如果我调试它......它会找到元素。

任何帮助将不胜感激!

标签: c#seleniumimplicitwait

解决方案


推荐阅读