如果Capybara有许多相同类型的按钮,如何按任何可用的按钮?

时间:2018-04-05 11:36:08

标签: ruby automation automated-tests capybara

我有很多按钮,但在我的测试中,我不想选择/按下相同的按钮。如果随机选择/按任何可用按钮,将会更好地测试。

带有按钮的代码示例和image现实生活中的样式

<a onclick="ShowDayPopup('clientCode', 'clientObject', '16', '2018.03', '144', 'atk'); return false;" id="ctl00_ContentPlaceHolder1_btnInsert_1591580_16" class="cool-button blue width73" href='javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$ContentPlaceHolder1$btnInsert_1591580_16", "", true, "", "", false, true))'>Button</a>

<a onclick="ShowDayPopup('clientCode', 'clientObject', '17', '2018.03', '144', 'atk'); return false;" id="ctl00_ContentPlaceHolder1_btnInsert_1591580_17" class="cool-button blue width73" href='javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$ContentPlaceHolder1$btnInsert_1591580_17", "", true, "", "", false, true))'>Button</a>

1 个答案:

答案 0 :(得分:0)

正如评论中所提到的,在测试中使用随机行为通常是一个坏主意,但是要按照您在问题中提出的问题,您可以使用all来获取所有匹配的按钮,然后使用{{1选择随机成员。首先需要的是一个选择所有潜在按钮的选择器。鉴于您提供的HTML,您可以使用CSS选择器或使用:link选择器并单独指定类

sample

all('a.cool-button', minimum: 1).sample.click

all(:link, class: 'cool-button', minimum: 1).sample.click 被指定为触发等待/重试行为,以防在页面上动态加载按钮(在Capybara 3.0中不需要)