Selinium:等待功能和条件是否重复
本文关键字:是否 条件 等待 功能 Selinium | 更新日期: 2023-09-27 18:19:44
在我的自动化项目中。
浏览器:Firefox
我想添加一个没有任何特定时间的等待功能
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(7));
IWebElement query1 = driver.FindElement(By.("continue"));
怎么能做到呢?
同时验证如果没有加载另一个页面,则重复前面的功能。我之所以这么做是因为有时浏览器不会更改页面。事实上,它停留在同一页上。
此外,在硒中这是可能的
- 清除最后一小时的缓存和Cookie
- 在新选项卡中打开URL(在已打开的浏览器中,而不是打开新窗口)
有一件事对我来说一直有效(关于等待),那就是在导体框架中使用。。
以下是一些您可以尝试在C#中重新创建的伪代码:
while (size == 0) {
size = driver.findElements(by).size();
if (attempts == MAX_ATTEMPTS) fail(String.format("Could not find %s after %d seconds",
by.toString(),
MAX_ATTEMPTS));
attempts++;
try {
Thread.sleep(1000); // sleep for 1 second.
} catch (Exception x) {
fail("Failed due to an exception during Thread.sleep!");
x.printStackTrace();
}
}
基本上,这会循环通过传递的选择器的大小,并每秒轮询一次。另一种方法,你可以做到,只是条件。
更多伪代码:
function waitForElement(element) {
Wait.Until(ExpectedConditions.elementIsClickable(element), 10.Seconds)
}
还有你的问题-
硒能。。。
- 清除最后一小时的缓存和Cookie在新选项卡中打开URL(在已打开的浏览器中,而不是打开新窗口)
- 在新选项卡中打开URL(在已打开的浏览器中,而不是打开新窗口)
如果你通过使测试用例相互独立而不是反复使用同一个浏览器来正确地编写测试用例,这种情况就会自动发生。当Selenium打开一个新窗口时,它会以一个全新的概要文件重新启动,这意味着它从一开始就在缓存中"什么都没有"。
Selenium不知道(也永远不会)选项卡和窗口之间的区别。对硒来说,它只是一个把手。
来源: