0
我有一些测试和使用硒来运行它们。当搜索什么和在哪里使用隐式等待时,我看到了一个混合的评论。它应该仅在初始化测试时使用,还是应该在您希望隐式等待元素被发现时使用?隐含的等待硒
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(20);
我有一些测试和使用硒来运行它们。当搜索什么和在哪里使用隐式等待时,我看到了一个混合的评论。它应该仅在初始化测试时使用,还是应该在您希望隐式等待元素被发现时使用?隐含的等待硒
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(20);
隐含的等待只能在初始化driver
(如果有的话)时才使用。显式等待在调试时更容易跟踪,并且设计得更加细化,例如在Page Object之内。
在您的driver
上设置隐含等待时间会对您的等待时间产生全局影响,同时保持设置相对于消费者或未来维护者隐藏起来。这可能会产生问题,特别是在通过WebDriverWait
与明确的等待时间配对时。您的等待时间可能会意外增加。
下面是一个明确的等待的例子:
var webDriverWait = new WebDriverWait(driver, TimeSpan.FromSeconds(5));
webDriverWait.Until(ExpectedConditions.ElementExists(By.Id("testId"));
两个和何时使用它们之间的优劣更透彻的对比可以发现here。
谢谢你的解释和答案。我应该在哪里放这个代码'var webDriverWait = new WebDriverWait(driver,TimeSpan.FromSeconds(5));' –
这取决于。如果使用页面对象,如果您希望指定的时间在使用的任何地方都是统一的,那么它可以创建为与UI交互的单一方法(例如,LoginPage.Login())或类内部(例如LoginPage)在页面中。理想情况下,您希望在代码中具有特定的意义。 – Jordan
如果您需要更多关于隐式和显式等待的详细信息 - 这些答案很好 - https://stackoverflow.com/a/15174978/631417,https://stackoverflow.com/a/28067495/631417 – Jordan