【问题标题】:Cucumber and javascript黄瓜和 JavaScript
【发布时间】:2010-10-29 16:23:51
【问题描述】:

我正在使用 ajax 来进行选择。用户必须单击选择中的一项。

一个。 Ajax 需要一些时间,我是否需要延迟测试,如果需要怎么办? 湾。选择显示为多个

项目和标签中的类将其定义为可点击项目。我如何告诉 cucumber 从选择中选择一个项目?

问候

伊兰诺伊

【问题讨论】:

    标签: cucumber


    【解决方案1】:

    要引入延迟,您可以使用传统的等待机制:

    $browser.select_list(:id,'selection_field').select('first item') # Watir uses set or select
    sleep 2  # Wait 2 seconds
    $browser.select_list(:id,'selection_field').set('second item') # Watir uses set or select
    

    我假设“选择显示为多个”意味着用户可以使用“Ctrl+LeftClick”来选择列表中的多个项目。在这种情况下,上面的以下代码应该允许您继续设置/选择项目,直到您心满意足为止。

    http://wiki.openqa.org/display/WTR/Selection+Boxes

    【讨论】:

    • 顺便说一句,我会尽力了解为什么存在等待,如果你能帮助它尝试消除这种情况,以确保你的测试不会开始花费大量时间等等重要的是在未来开始失败(导致你延长那个时间范围)。
    • 简单地睡一段固定的时间是实现这一目标的一种非常脆弱的方式。如果你睡眠时间不够长,测试可能会失败。如果时间太长,那你就是在浪费时间睡觉。
    • @AlistairH,我绝对同意,因此放在一边。
    • 但如果您只是等待动画完成以使元素可见,那么睡眠是完美的
    【解决方案2】:

    您应该在这里做的是在尝试与之交互之前验证选择元素是否存在于页面上。

    您没有指定您实际使用什么来驱动浏览器。但是,例如,如果您正在使用 capybara,则有一个 has_select? 方法,如果没有立即找到该元素,它会自动等待很短的时间以显示该元素,正是为了处理您需要的那种 AJAX 情况描述。

    Selenium 有一个 wait_for_element_present 方法,它可以做很多相同的事情。

    一般来说,使用的模式基本上是这样的:

    1. 断言该项目存在于页面上,使用某种方法,如果它没有立即出现,将重试,如果在设定的时间后没有出现则超时
    2. 一旦您确定该元素在页面上,请尝试与该元素进行交互

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-15
      • 2019-12-28
      相关资源
      最近更新 更多