【发布时间】:2020-10-30 07:14:57
【问题描述】:
async Task RunWorker(ConcurrentQueue<string> idList)
{
var driver = new ChromeDriver();
while (idList.TryDequeue( out var nextId ))
{
var url = GetNextUrl( nextId );
driver.Navigate().GoToUrl( url );
var waiter = new WebDriverWait( driver, TimeSpan.FromSeconds(10) );
waiter.Until( driver => driver.FindElement( By.XPath( "//div[@id='DocumentdetailsDiv']" ) ) );
}
driver.Quit();
}
waiter.Until 立即抛出 ElementNotFound 异常,无需显式等待 10 秒。奇怪的是,如果我调试程序,并等待 1 秒钟直到我运行直到,那么它会按预期等待。不确定我做错了什么,因为我看到的所有示例代码都使用相同的方法。
【问题讨论】:
-
不知道为什么会这样,但您可能不需要在这里等待。导航到 URL 时,Selenium 已经等待页面就绪状态。
-
检查您的 xpath 是否匹配多个元素?如果是,则 find 元素将仅使用第一个匹配元素,因此请确保它是第一个匹配元素,如果不是,则更改 xpath。
标签: c# selenium selenium-chromedriver