2013-02-07 52 views
1

您是否知道在有限的时间内执行某项操作的方法? 在我的情况下,我正在使用webdriver。 当我验证表单动作做得很好,但页面运行在一个循环中。我想在点击等待10秒后强制刷新页面。Selenium - 在10秒后离开webdriver点击

// action that I would leave after 10 seconds 
driver.findElement(By.id("submit")).click();  

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
driver.navigate().refresh(); 

我想,点击后,进入下一步10秒后,由于治疗被阻止,因为没有答案,我希望它去到下一行,即使没有答案。

感谢您的帮助。

+0

我想你可以使用'显式等待',或者你也可以使用'Thread.sleep(10000)'。我宁愿明确地等待线程。 – Smit

回答

0

如果您只是在执行刷新后等待页面上的某个元素加载,那将会非常受欢迎。这意味着你不是总是等待10秒,并将继续你的动作发布页面重新加载。
或者,Thread.Sleep(10000)将等待10秒,正如Smit在评论中所建议的那样。

0

我的建议是使用Thread.sleep()不是一个明智的选择。您可以使用硒Implicit WaitExplicit Wait

查看Reference的帖子。

+0

对不起,我新的,我试过这个,但不工作:WebDriverWait等待=新的WebDriverWait(驱动程序,30); wait.until(driver.findElement(By.id( “提交”))点击()); – TimeIsNear

+0

只是澄清我。在点击按钮后,你想要刷新页面10秒钟的间隔。对吗? – Manigandan

+0

点击后,我会在10秒后进入下一步,因为治疗因为没有答案而被阻塞,所以即使没有答案,我也想让它进入下一条线。 – TimeIsNear

3

使用Thread.sleep(10000)等待提交后单击刷新下一个要执行的动作,因为当您使用隐式等待或显式等待时,它不会等待10秒钟。它等到下一个操作按钮对其可见。根据服务器的响应时间,可能为2秒或5秒或8秒。所以最好使用Thread.sleep(10000)。

+0

我同意这个答案,如果你不关心另一个对象是否出现,但只想等待10秒,最好的办法是Thread.Sleep.In这种情况下,你不需要声明这设置了隐含的等待。但是,如果您需要查看是否出现某个对象,则可以使用隐式等待。原因是隐式等待时间只适用于在对象上使用findelement或findelements方法。 – Buddha

+0

@布达哈 - 是的,你是正确的隐含的等待时间只适用于我们使用findelement或findelements方法。 –