gpt4 book ai didi

ruby-on-rails - capybara 如何填写具有相同名称的所有输入?

转载 作者:行者123 更新时间:2023-12-03 01:59:10 24 4
gpt4 key购买 nike

我有一个带有输入字段的表单,可以动态添加或删除该字段。我所有的输入都是

name='first_name[]'

我如何填写所有输入内容?

最佳答案

如果您只是在每个输入中输入任何内容,则可以使用 all 获取所有匹配元素的集合。然后您可以迭代每个输入它们。

all_matching_inputs = page.all(:fillable_field, 'first_name[]')
all_matching_inputs.each{ |e| e.set('text') }

如果您需要输入特定的内容,那么有几种解决方案。

如果输入字段唯一的独特之处是它们的位置,那么您可以找到所有输入字段,然后按位置选择一个:

# Set the first match       
page.all(:fillable_field, 'first_name[]').first.set('text')

# Set the third match (note 0-based index)
page.all(:fillable_field, 'first_name[]')[2].set('text')

# Set the last match
page.all(:fillable_field, 'first_name[]').last.set('text')

或者,您可以使用 css 选择器(或 xpath 选择器)。然而,阅读起来有点困难:

# Set the second match (note 1-based index)
page.find('input[name=first_name\[\]]:nth-of-type(2)').set('text')

您想要查找的元素(输入)很少没有任何独特之处。通常,它周围有一些相关且独特的元素(即,页面上必须有其他元素,作为用户,您可以使用这些元素将其与其他元素区分开来)。

例如,在以下 html 中:

<div>
<span>User1</span>
<input name='first_name[]'>
</div>
<div>
<span>User2</span>
<input name='first_name[]'>
</div>

有两个同名的输入字段。但是,可以根据相关的兄弟跨度来区分它们,这告诉用户输入是相关的。

在这种情况下,您可以找到跨度,转到父 div,然后在该 div 的范围内找到输入。本质上,这是根据用户查找输入。

page.find('span', :text => 'User2').find(:xpath, '..').fill_in('first_name[]', :with => 'text')

关于ruby-on-rails - capybara 如何填写具有相同名称的所有输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18721822/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com