cucumber - 是否可以在水豚中选择多个相等的元素?
问题描述
我开始使用以下 gems 研究自动化测试,capybara
我在测试cucumber
中看到很多发生的事情是输入类型字段(如果它们重复)SitePrism
。webdriver
有些是这样的:
<input type="text" placeholder="some cool text"/>
<input type="text" placeholder="some cool text"/>
<input type="text" placeholder="some cool text"/>
所以我想知道,是否可以同时在所有字段中定义一些值,例如:
site.find('[placeholder="some cool text"]').set('A simple string')
我很难找到答案,一次定义一个循环是没有问题的,但我不知道如何同时选择它们。
解决方案
find
仅限于返回一个元素,如果你想要多个你会想要使用all
. 使用 Capybara 之类的
page.all('input', text: 'some cool text').each do |inp|
inp.set('A simple string')
end
会做你要求的。如果您想确保处理的正是 3 个匹配元素,您将使用该count
选项(选项之间有also
最小,
最大值, and
可用)
page.all('input', text: 'some cool text', count: 3).each do |inp|
inp.set('A simple string')
end
更新:既然你已经更新了你可以做的问题
page.all("input[placeholder='some cool text']", count: 3).each do |inp|
inp.set('A simple string')
end
但我可能会使用 Capybara 提供的选择器类型,例如
page.all(:fillable_field, placeholder: 'some cool text', count: 3).each do |inp|
inp.set('A simple string')
end
推荐阅读
- javascript - 地理位置不断请求许可
- android - 离子电容器构建找不到符号 android.support.v4.app.ActivityCompat
- html - 如何在每张照片下方对齐标题?
- api - 如图所示,当我运行 dotnet run 命令时,命令提示符上没有任何反应
- c# - Windows.Devices.Usb 接收延迟
- django - 文件上传到服务器后触发动作(文件存在于服务器路径上)
- android - Android 编译错误 - 任务 ':app:kaptDebugKotlin' 执行失败
- ubuntu - Ubuntu 16 R 无法验证以下签名
- php - SOAP 数据从 Postman 返回,但不使用 Guzzle
- javascript - 如何在for循环中比较两个不同长度的对象?