C# selenium c中单击的延迟#

C# selenium c中单击的延迟#,c#,selenium,selenium-webdriver,C#,Selenium,Selenium Webdriver,如何为selenium中的每次单击执行3秒延迟?例如,我有这个代码,我想有3秒的延迟页面加载完全。单击分页中的按钮: for( int i = 1; i<6; i++) { driver.FindElement(By.XPath(".//*[@id='injectview']/div/div/div/table[2]/tbody/tr/td[1]/ul/li["+ i +"]/a")).Click(); } for(int i=1;i您可以使用wait.until(…);来包装整个请

如何为selenium中的每次单击执行3秒延迟?例如,我有这个代码,我想有3秒的延迟页面加载完全。单击分页中的按钮:

for( int i = 1; i<6; i++)
{
  driver.FindElement(By.XPath(".//*[@id='injectview']/div/div/div/table[2]/tbody/tr/td[1]/ul/li["+ i +"]/a")).Click();
}

for(int i=1;i您可以使用
wait.until(…);
来包装整个请求,它应该等待每个调用的完成。

我认为更干净的解决方案是使用异步

for( int i = 1; i<6; i++)
{

   await PutTaskDelay();
  driver.FindElement(By.XPath(".//*[@id='injectview']/div/div/div/table[2]/tbody/tr/td[1]/ul/li["+ i +"]/a")).Click();
}

 async Task PutTaskDelay()
        {
            await Task.Delay(3000);
        }

for(int i=1;i不要使用
Thread.Sleep()
,因为这只会等待一个硬编码的时间值。如果到那时还没有完成页面加载怎么办?如果页面加载速度超过3秒怎么办?更好的做法是使用
WebDriverWait
等待页面完成加载

WebDriverWait wait = new WebDriverWait(Driver, TimeSpan.FromSeconds(3));
for (int i = 1; i < 6; i++)
{
    By locator = By.XPath(".//*[@id='injectview']/div/div/div/table[2]/tbody/tr/td[1]/ul/li[" + i + "]/a");
    IWebElement element = Driver.FindElement(locator);
    element.Click();
    wait.Until(ExpectedConditions.StalenessOf(element));
    wait.Until(ExpectedConditions.ElementToBeClickable(locator));
}
WebDriverWait wait=new-WebDriverWait(驱动程序,TimeSpan.FromSeconds(3));
对于(int i=1;i<6;i++)
{
By locator=By.XPath(“./*[@id='injectview']/div/div/table[2]/tbody/tr/td[1]/ul/li[“+i+”]/a”);
IWebElement元素=Driver.findelelement(定位器);
元素。单击();
等待.直到(元素的ExpectedConditions.Stalenness);
wait.Until(ExpectedConditions.elementtobelickable(locator));
}
逻辑是这样的:

  • 单击分页链接
  • 等待分页链接失效。失效意味着元素不再位于DOM中,这表示正在加载新页面
  • 等待元素可单击,这表明新页面(可能)已完成加载
  • 对每个链接重复1-3次

  • 注意:由于嵌套层太多,您的XPath将变得脆弱。如果您在导航链接周围提供HTML,我可能会创建一个不那么脆弱的定位器。

    这与
    Thread.Sleep()
    没有什么不同,这是一个糟糕的做法。您删除了
    Thread.Sleep()
    但我认为你的答案不够具体,不够有用。“包装整个请求”是什么意思?你有OP的代码,拿着它,然后根据你的建议发布他应该使用的最终答案。