我有很多按钮,但在我的测试中,我不想选择/按下相同的按钮。如果随机选择/按任何可用按钮,将会更好地测试。
带有按钮的代码示例和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>
答案 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中不需要)