C# 如何使用JavaScript设置元素的延迟';readyState';?

C# 如何使用JavaScript设置元素的延迟';readyState';?,c#,selenium,selenium-webdriver,C#,Selenium,Selenium Webdriver,我为web应用程序编写自动测试,但我遇到了延迟问题。我不想在脚本中使用睡眠,所以我写了下一个: public bool WaitForPageToLoadCompletely() { return new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(d => ((IJavaScriptExecutor)d).ExecuteScript("return d

我为web应用程序编写自动测试,但我遇到了延迟问题。我不想在脚本中使用睡眠,所以我写了下一个:

public bool WaitForPageToLoadCompletely()
        {
            return new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(d =>
            ((IJavaScriptExecutor)d).ExecuteScript("return document.readyState").Equals("complete"));
        }
但它只适用于整个页面,而不适用于页面上的元素

我看起来像这样,但元素


谢谢大家!

元素没有“就绪状态”。您必须等待元素可找到或其属性属性具有您期望的值(例如,如果它是隐藏的,则必须等待它可见-例如:

        {
            return new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(d =>
           !d.FindElement(By.Id("Id").GetAttribute("style").Contains("display: none"));
        }

您也没有其他命令来等待元素,解决方法是在每个页面的特定元素之后添加一个等待。谢谢!在我的情况下,页面加载得很快,然后是页面上的元素,我不想使用sleeps。