我对 Selenium 相当陌生,我正在为使用它的 Web 应用程序编写测试。在此过程中,我使用断言来确保 Web 应用程序正常工作。对于其中一些断言,我在一个 web 元素上断言,该元素具有一个已知预期数字的数值。问题是当进行更改以更改此数值时,更改会根据互联网连接的速度逐渐发生。到目前为止,在我使用断言之前已经诉诸于使用睡眠来等待元素完成刷新,但我想这样做,所以这个等待不会超过元素停止刷新所需的时间,因此不必包括太短或太长的睡眠。
问问题
548 次
2 回答
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));
于 2019-07-02T20:03:51.357 回答
0
你应该试试这个:
WebDriverWait wait = new WebDriverWait(webDriver, timeoutInSeconds);
wait.until(ExpectedConditions.visibilityOfElementLocated(<specific locator of element>));
睡眠不是一个好的选择,因为您等待的时间总是预期的。
在上面介绍的方法中,您总是等待特定元素的可见性。当元素可见时,您的测试步骤将继续进行。隐式睡眠没有额外的等待时间
于 2019-07-02T20:07:40.280 回答