【发布时间】:2010-10-29 16:23:51
【问题描述】:
我正在使用 ajax 来进行选择。用户必须单击选择中的一项。
一个。 Ajax 需要一些时间,我是否需要延迟测试,如果需要怎么办? 湾。选择显示为多个
项目和标签中的类将其定义为可点击项目。我如何告诉 cucumber 从选择中选择一个项目?
问候
伊兰诺伊
【问题讨论】:
标签: cucumber
我正在使用 ajax 来进行选择。用户必须单击选择中的一项。
一个。 Ajax 需要一些时间,我是否需要延迟测试,如果需要怎么办? 湾。选择显示为多个
项目和标签中的类将其定义为可点击项目。我如何告诉 cucumber 从选择中选择一个项目?
问候
伊兰诺伊
【问题讨论】:
标签: cucumber
要引入延迟,您可以使用传统的等待机制:
$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”来选择列表中的多个项目。在这种情况下,上面的以下代码应该允许您继续设置/选择项目,直到您心满意足为止。
【讨论】:
您应该在这里做的是在尝试与之交互之前验证选择元素是否存在于页面上。
您没有指定您实际使用什么来驱动浏览器。但是,例如,如果您正在使用 capybara,则有一个 has_select? 方法,如果没有立即找到该元素,它会自动等待很短的时间以显示该元素,正是为了处理您需要的那种 AJAX 情况描述。
Selenium 有一个 wait_for_element_present 方法,它可以做很多相同的事情。
一般来说,使用的模式基本上是这样的:
【讨论】: