如何在等待Web元素完成刷新的硒中创建等待

时间:2019-07-02 19:45:20

标签: java selenium selenium-webdriver expected-condition

我对Selenium并不陌生,我正在为使用它的Web应用程序编写测试。为此,我使用断言来确保Web应用程序正常运行。对于其中的一些断言,我是在Web元素上断言,该Web元素具有一个数值,在该数值中已知期望的数字。问题是,当进行更改以更改此数值时,更改会根据Internet连接的速度逐渐发生。到目前为止,在我使用断言之前,已经采取了使用sleep's等待元素完成刷新的操作,但是我想这样做,因此此等待时间不超过元素停止刷新所花费的时间,因此不必包括太短或太长的睡眠。

2 个答案:

答案 0 :(得分:0)

避免使用睡眠,并使用隐式等待代替它,或使用预期的条件(如果适用)。下面是它的C#代码

int time =10; // set maximum time required for operation
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(time));
wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.XPath(""))); //replace "" with your desired xpath

上面的代码将最多等待10秒钟,以使一个元素可见。但是如果它出现得较早,则它将跳至下一个过程,因此您不必等待特定的时间。另外,还有其他预期条件,例如ElementExists,ElementToBeClickable等。我将留给您自己研究适合自己的选项

如果您想使用隐式等待,请专门使用以下代码

driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(50));

答案 1 :(得分:0)

您应该尝试以下操作:

WebDriverWait wait = new WebDriverWait(webDriver, timeoutInSeconds);
wait.until(ExpectedConditions.visibilityOfElementLocated(<specific locator of element>));

睡眠不是一个好选择,因为您总是等待预期的时间。

在上述方法中,您始终等待特定元素的可见性。当一个元素可见时,您的测试步骤将继续。隐式睡眠没有额外的等待时间