我正在尝试使用Capybara填写网页上的日期字段:
<div class="activity--history-custom-dates-filter-container">
<label class="activity--header-element-label">From </label>
<input class="activity--history-custom-date-field
fid-datepicker--input activity-- history-custom-date-from-field hasDatepicker"
placeholder="mm/dd/yyyy" id="dp1416484110853">
<button class="activity--calendar-button"></button>
</div>
我可以使用以下内容访问父div:
within :xpath, "//label[text()='From ']/.." do
fill_in ????, with: period.first.american
end
我想用显示的日期填写输入字段,但是我 似乎无法找到正确的'定位器'(显示为????)作为第一个参数 填写。 id是以编程方式生成的,因此每个都会更改 访问该页面,这是不可接受的。
Capybara文档描述fill_in如下:
“找到文本字段或文本区域,并使用给定文本填充它 该字段可以通过其名称,标识或标签文本找到。“
显然,'name'在这里表示与节点关联的任何文本,而不是 这里元素'input'的名称。
我不知道如何继续。有什么想法吗?
答案 0 :(得分:4)
您只能使用within
阻止?如果没有,也许这样做:
find(:xpath, "//label[text()='From ']/../input").set period.first.american
答案 1 :(得分:3)
您应该能够以更漂亮的方式使用css,如下所示:
within '.activity--history-custom-dates-filter-container' do
find('input').set period.first.american
end