【问题标题】:Wait time between web elements [Webdriverwait Selenium]Web 元素之间的等待时间 [Webdriverwait Selenium]
【发布时间】: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


【解决方案1】:

像这样尝试Thread.sleep()。如果想停止你的脚本运行。

  Thread.sleep(10000);
  WebElement element1 = driver.findElement(By.xpath("/html/body/div[2]/div[2]/div[2]/div/div/form/div[5]/div/input"));
  element1.click();
  hread.sleep(20000);
  // Second path
  WebElement element2 = driver.findElement(By.xpath("//*[@id='sbt67Pin']"));
  element2.click();
  // Third path
  Thread.sleep(30000);

【讨论】:

    猜你喜欢
    • 2021-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多