当前位置: 首页 > 知识库问答 >
问题:

Selenium显式等待

居晗日
2023-03-14

我正在尝试自动化基于共享点的应用程序,它有时会很慢。在下面的示例中,我试图将密码输入包装成显式等待。目前,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");

共有1个答案

钦英发
2023-03-14

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

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文档。相关类在< code>OpenQA下。Selenium.Support.UI命名空间,其中有一个< code>ExpectedConditions类会很方便。

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

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

 类似资料:
  • 问题内容: 我正在浏览一个Web应用程序,如果尝试单击某个元素之后才能与之交互,则该Web应用程序通常会引发错误。 使用Selenium WebDriver(java)时,我可以轻松解决此问题: 但是,我试图使用Selenium类型库在VBA中编写脚本,尽管尝试了许多不同的方法,但我唯一的成功是: 有人告诉我,应该尽可能避免这样做。如果有人可以建议如何将Java转换为VBA或提供任何其他解决方案,

  • 登录后,页面将重定向到一个页面(我想等待页面加载),在那里我通过标记名查找元素, 在这里,我想给出显式等待查找元素,我想等待它的所有可见性或存在。我的网页中只有两个输入。如果我长时间使用隐式等待,代码将起作用。但它各不相同。所以我决定给出显式等待,我怎么能给出显式等待查找元素?或者我如何检查列表中第二个的可见性(列出我的ipt)。即,我的输入(1)。当我给出所有元素()的可见性时,就像下面一样,它

  • 我如何用一个显式的替换这个隐式的等待呢? driver=新ChromeDriver(功能); driver.manage().DeleteAllCookies();

  • 问题内容: 我在用: 但是对于以下元素它仍然连续失败 我添加了等待代码: 隐式等待是否应该等到找到一个元素后再进行处理?如果我使用而不是我添加的代码,还会更好吗? 问题答案: TL; DR:始终使用显式等待。忘记隐式等待的存在。 以下是显式等待与隐式等待之间的区别的简要概述: 显式等待: 记录和定义的行为。 在硒的本地部分运行(以你的代码语言显示)。 可以在你能想到的任何条件下工作。 返回成功或超

  • 我正在寻找一个元素http://ntry.com/#/stats/ladder/round.php,但在尝试了几种方法后,我一直未能找到它,包括通过css选择器的ind_元素,通过xpath的ind_元素。。。等等 即使我使用WebDriverWait,我还是失败了。有什么问题吗? 我使用隐式等待,但这也会产生相同的错误。不使用Wait也会导致NoTouchElementException。 网站

  • Selenium提供了显式的等待功能来处理(例如)当您想要对尚未可单击的元素执行操作时的情况。 语法如下: 这告诉程序等待,直到某个元素(通过其ID定位)可以单击。 element_to_be_clickable()调用内部函数读取指定的参数。在这种情况下,它在DOM中搜索与ID:相对应的元素。 但是,我不能直接将对象传递到函数中,因为它在内部调用中失败。 在处理本身时,有没有一种方法可以使用这些