【发布时间】:2019-12-02 08:53:28
【问题描述】:
我试图在每个网络元素之间放置时间间隔。 例如,我希望第一个 web 元素应该在 10 秒后工作,第二个 web 元素应该在 30 秒后工作。但这对我不起作用。
如果我手动单击元素 1,那么第二个元素会自动工作,因为在当前情况下,如果我手动单击第一个元素,那么第二个元素不会自动工作。
driver = new FirefoxDriver(options);
driver.get("http://demo.com");
((JavascriptExecutor) driver).executeScript("window.focus();");
WebDriverWait wait = new WebDriverWait(driver, 600);
// First path
WebElement element1 = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("/html/body/div[2]/div[2]/div[2]/div/div/form/div[5]/div/input")));
element1.click();
// Second path
WebElement element2 = wait.until(
ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='sbt67Pin']")));
element2.click();
// Third path
【问题讨论】:
-
您误解了
WebDriverWait的作用。对于固定等待,您可以使用sleep。 -
是的,我知道这适用于整个过程,但我应该为单个元素使用什么?我应该在哪里使用,你能写下来吗?
-
@Punjabii 我在评论中写道,要始终等待 10 秒,您需要使用
sleep。 -
@KunduK 隐式等待不会等待 10 秒,它的行为类似于
WebDriverWait。 -
@Guy:你是对的。抱歉评论有误。他想让脚本暂停一段时间。所以在这种情况下需要
Thread.sleep()。
标签: java selenium selenium-webdriver selenium-chromedriver selenium-firefoxdriver