【问题标题】:Selenium Explicit WaitsSelenium 显式等待
【发布时间】:2023-03-11 04:55:01
【问题描述】:

我正在尝试自动化一个基于共享点的应用程序,这有时会很慢。在下面的示例中,我试图将密码输入包装到显式等待中。目前,Selenium 运行测试速度过快,导致无法执行操作。

如何将密码部分包装成 selenium 显式方式?

    // Enter username
        var input_Username = Driver.Instance.FindElement(By.Id("username_input"));
        input_Username.SendKeys("admin");

        WebDriverWait wait = new WebDriverWait(Driver.Instance, TimeSpan.FromSeconds(3000));


        // Enter pasword

        var input_Password = Driver.Instance.FindElement(By.Id("pw_input"));
        input_Password.SendKeys("password");

【问题讨论】:

    标签: selenium selenium-webdriver webdriver


    【解决方案1】:

    是的,你在正确的轨道上。

    WebDriverWait 实例已经创建,现在你只需要这样调用它:

    WebDriverWait wait = new WebDriverWait(Driver.Instance, TimeSpan.FromSeconds(3000));
    
    var input_Password = wait.Until(d=> d.FindElement(By.Id("pw_input")));
    input_Password.SendKeys("password");
    

    请参考 C# API doc 了解更多详情。相关类在OpenQA.Selenium.Support.UI Namespace 下,其中有一个ExpectedConditions 类会很方便。

    var input_Password = wait.Until(ExpectedConditions.ElementExists(By.Id("pw_input")));
    

    另请注意,您的代码将超时设置为 3000 秒,似乎太长了。

    【讨论】:

      猜你喜欢
      • 2013-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 1970-01-01
      • 2013-05-28
      • 2020-06-06
      • 1970-01-01
      相关资源
      最近更新 更多