我正在开始一门有关使用Java中的Selenium / Web驱动程序进行自动化/测试的新课程。 为了进行测试,我们有一个python Web应用程序(使用flask),它只是虚构博客的条目/帖子的基本CRUD。
在解释隐式等待和显式等待期间,该示例将插入一个新条目,并使用隐式等待来等待成功消息。 鉴于Flask应用程序在本地运行,因此测试等待的速度还不够慢。因此,教授在响应方法中放置了“ time.sleep()”,因此返回消息可能需要更长的时间。
这是响应方法的一部分:
elapsed_time=randint(10,12)
time.sleep(elapsed_time)
flash("Entry '" + entry.title + "' created successfully." + str(elapsed_time), "success")
在测试类的设置方法中:
@Before
public void setUp() {
System.setProperty("webdriver.chrome.driver", "C:\\ChromeDriver\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
driver.get("localhost:5000");
}
这当然可以,因为隐式等待时间设置为15秒,并且应用程序的响应时间不会超过12秒。
问题是,如果我将等待时间设置为1秒,它仍然可以使用,即使我删除了整行,它仍然可以使用。 (有关找不到元素的错误)
我问教授为什么这没有失败,为什么继续等待比我设置的隐式等待(1秒)更多,他不确定。他提到他认为某个地方有一些默认时间,但没有给我任何精确度。
所以,为什么如果我将隐式等待时间设置为1秒,那么在尝试查找消息时它不会失败?
我缺少什么?
找到消息的代码是:
String currentMessage = driver.findElement(By.xpath("/html/body/div[2]/div[1]/div[1]/div/span")).getText();
System.out.println(currentMessage);
assertTrue(currentMessage.contains("Entry 'My newest post' created successfully."));
答案 0 :(得分:0)
完全加载页面需要多少时间?也许您的页面未完全加载。尝试将两个等待时间都设置为1秒,然后尝试一下。
将页面超时设置为1秒。
driver.manage()。timeouts()。pageLoadTimeout(1,TimeUnit.SECONDS);
将隐式等待时间设置为1秒。
driver.manage()。timeouts()。pageLoadTimeout(1,TimeUnit.SECONDS);