我在我的应用程序中有订阅屏幕。有5种不同的选择,因此有5个不同的按钮。它是数据驱动的,所以可能有1或10个或其他。 n
的选择。我怎样才能让水豚找到第一,第二或第三个按钮?
在编写请求规范时,我发现我不知道如何指向这些规范。我知道我可以设置match: :first
作为click_button
消息的参数,但还有其他方法可以随意调用其中的一个吗?
我在我的应用程序中有订阅屏幕。有5种不同的选择,因此有5个不同的按钮。它是数据驱动的,所以可能有1或10个或其他。 n
的选择。我怎样才能让水豚找到第一,第二或第三个按钮?
在编写请求规范时,我发现我不知道如何指向这些规范。我知道我可以设置match: :first
作为click_button
消息的参数,但还有其他方法可以随意调用其中的一个吗?
水豚提供all
method。此方法返回Capybara::Result
的实例。这个类包括Enumerable,因此提供了像#[]
这样的方法。
all(selector)[n]
将返回符合定位符的页面上的第n个元素。这将是一个Capybara::Node::Element
的实例,您可以使用如click
,set
等方法自由使用。
缺点是all
不会等待元素出现。如果你需要它,你可以使用同步,如:
page.should have_css('#id') # wait for some element that appears at the same time or after the element that you click at the next row
all(locator)[n].click
幸运的是,你有几个不同的选项。你可以调用第三个孩子,你可以做(.class)[2],或者如果你正在寻找第一个孩子,你可以先调用元素= first(.css),然后通过类似element.click 。如果你正在做页面对象模型,你一定要定义你的对象