等待元素一定的时间

时间:2018-04-19 08:11:17

标签: selenium webdriverwait

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

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

如何在一秒钟内尝试查找元素的方式实现方法findElement?我不想再逗留...谢谢

3 个答案:

答案 0 :(得分:1)

试试这个 -

gcc -o hello-x86 hello.c -g -rdynamic -O0 -Wall
./hello-x86
size = 6
0x40095c : ./hello-x86(foo+0x1f) [0x40095c]
0x400a2d : ./hello-x86(b+0x9) [0x400a2d]
0x400a38 : ./hello-x86(a+0x9) [0x400a38]
0x400a4e : ./hello-x86(main+0x14) [0x400a4e]
0x7fee0d003f45 : /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5) [0x7fee0d003f45]
0x400879 : ./hello-x86() [0x400879]

答案 1 :(得分:0)

如果我总结一下你的要求如下:

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

    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
    }
    

答案 2 :(得分:-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;}
相关问题