当前位置: 首页 > 面试题库 >

是否等效于使用Java的Selenium WebDriver测试中的waitForVisible / waitForElementPresent?

国斌斌
2023-03-14
问题内容

通过“ HTML” Selenium测试(通过Selenium
IDE或手动创建),您可以使用一些非常方便的命令,例如 WaitForElementPresent
WaitForVisible

<tr>
    <td>waitForElementPresent</td>
    <td>id=saveButton</td>
    <td></td>
</tr>

用Java编写Selenium测试(Webdriver / Selenium RC,我不确定这里的术语)时, 是否有类似的内置功能

例如,用于检查对话框(需要一段时间才能打开)是否可见…

WebElement dialog = driver.findElement(By.id("reportDialog"));
assertTrue(dialog.isDisplayed());  // often fails as it isn't visible *yet*

编写此类检查的最干净 可靠的 方法是什么?

Thread.sleep()到处添加呼叫将是丑陋且脆弱的,并且滚动自己的while循环也显得很笨拙…


问题答案:

[隐式和显式等待](http://seleniumhq.org/docs/04_webdriver_advanced.html#explicit-

and-implicit-waits)

隐式等待

隐式等待是告诉WebDriver在尝试查找一个或多个元素(如果不是立即可用)时轮询DOM一定时间。默认设置为0。设置后,将在WebDriver对象实例的生存期内设置隐式等待。

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

显式等待+
预期条件

显式等待是您定义的代码,用于等待特定条件发生后再继续执行代码。最糟糕的情况是Thread.sleep(),它将条件设置为要等待的确切时间段。提供了一些方便的方法,可以帮助您编写仅等待所需时间的代码。WebDriverWait与ExpectedCondition结合是实现此目的的一种方法。

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(
        ExpectedConditions.visibilityOfElementLocated(By.id("someid")));


 类似资料:
  • 问题内容: 最近,我遇到了一些Java代码,这些代码简单地将一些字符串放入Java TreeSet中,为其实现了基于距离的比较器,然后在日落时分快乐地计算出给定的分数来解决给定的问题。 我的问题 是否有适用于Python的等效数据结构? Java树集看起来基本上是一个有序字典,可以使用某种比较器来实现这种排序。 我看到有一个用于 OrderedDict的Py3K的PEP,但是我使用的是2.6.x。

  • 问题内容: 我知道我们可以使用Java中的方法通过指定其位置来获取字符串中的单个字符。C#中有等效的方法吗? 问题答案: 您可以像数组一样索引C#中的字符串,然后在该索引处获取字符。 例: 在Java中,您会说 在C#中,您会说

  • 本文向大家介绍C#是否等效于Java的Thread.setDaemon?,包括了C#是否等效于Java的Thread.setDaemon?的使用技巧和注意事项,需要的朋友参考一下 与Java的Thread.setDaemon等效的C#是前台线程和后台线程的概念。 当前台线程关闭时,后台线程将终止。前台线程继续运行,直到最后一个前台线程终止。 用于后台线程的属性是IsBackground,该属性获取

  • 问题内容: Java是否具有等效于Python 方法的方法? 问题答案: Guava还提供类似于Python的东西: 您也可以使用Guava的AbstractIterator实现一个相当简单的迭代器来执行相同的操作:

  • 问题内容: 我有两个对象,想要将它们配对,就像Python中的函数一样。我很确定JDK中没有此功能,但是在相当广泛的库中是否有类似Apache通用收藏集的类似内容?谢谢。 问题答案: 功能Java具有,以及您对Haskell或Scala的期望。(实际上,作者几乎都是Haskell程序员。)

  • 使用超文本标记语言Selenium测试(使用Selenium IDE或手动创建),您可以使用一些非常方便的命令,如或。 当用Java编写Selenium测试时(Webdriver/Selenium RC——我不确定这里的术语),是否有类似的内置功能? 例如,用于检查对话框(需要一段时间才能打开)是否可见... 编写此类检查代码的最干净、最健壮的方法是什么? 在所有地方添加调用将是丑陋和脆弱的,滚动