-2

我在测试自动化实施过程中遇到了一个问题。特别是测试检查是否显示汉堡菜单。到目前为止,我定义了元素和子元素,我只需要等待一秒钟,而不是浪费时间如果我知道该元素在几秒钟后不会显示。

WebDriverWait wait = new WebDriverWait(getDriver(), 1);
WebElement hamMenu = el.findElement(By.xpath(HAMBURGER_MENU_GENERAL_XPATH));

如何以在一秒钟内尝试查找元素的方式实现方法 findElement?我不想待太久...谢谢

4

3 回答 3

1

尝试这个 -

 WebElement elem = new WebDriverWait(driver, 1).until(ExpectedConditions.visibilityOfElementLocated(By.xpath(HAMBURGER_MENU_GENERAL_XPATH)));
于 2018-04-19T08:15:39.060 回答
0

如果我总结您的要求如下:

  1. 检查汉堡菜单是否仅显示 1 秒:您需要具有适当ExpectedConditions的WebDriverWait
  2. 几秒钟后元素可能/不显示:您需要将代码包装在一个try-catch {}块中,以便能够在没有汉堡包的情况下继续进行。

你有效的代码可以是:

try {
    WebElement hamburger =  new WebDriverWait(getDriver(), 1).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("HAMBURGER_MENU_GENERAL_XPATH")));
    System.out.println("Hamburger is displayed in 1 sec");
    //rest of your code
} catch (NoSuchElementException e){
    System.out.println("Hamburger wasn't displayed in 1 sec");
    //rest of your code
}
于 2018-04-19T08:39:58.633 回答
-1

我知道了。感谢所有提示。这只会等待很短的时间,这是预期的。

public boolean isHamMenuDisplayed(){
getDriver().manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
if (el.findElements(By.xpath(HAMBURGER_MENU_GENERAL_XPATH)).size() == 0)
   return false;
else
return true;}
于 2018-04-19T09:07:36.133 回答