#xpath #capybara #contains #timepicker
#xpath #capybara #содержит #timepicker
Вопрос:
Я новичок в capybara, и у меня возникли некоторые проблемы с текстовым полем, Capybara не может найти поле.
Мне нужно создать автоматические тесты, и один из них должен заполнять поля, которые постоянно меняются (id и name меняются, они такие: id=»patternDailyStart_146d7547140″, и это число всегда разное).
Html-часть выглядит так:
<div class="timepicker">
<input value="" id="patternDailyStart_146d7547140"
name="patternDailyStart_146d7547140"
class="timepicker-input patternDailyStart hasDatepicker"
type="text">
<img class="ui-datepicker-trigger"
src="/mpromoter/assets/4716a6a0a357181/app/components/timefield/clock.png"
alt="..."
title="...">
</div>
Это поле выбора времени. И проблема в том, что capybara не может найти поле.. однако я пытаюсь найти его для заполнения.
Когда я пытаюсь найти этот xpath, он найден, но когда я хочу заполнить его временем ($ starttime = 17:00), тогда он говорит, что элемент не найден или он не существует.
Эти xpath найдены:
page.has_xpath?('//tbody/tr/div/input[contains(., "patternDailyStart")]')
page.has_xpath?(:xpath, "//*[@class='timepicker-input patternDailyStart hasDatepicker']")
Я пытался заполнить так:
And(/^fill up the fields$/) do
field = find("//*[@class='timepicker-input patternDailyStart hasDatepicker'")
field.set $starttime
end
И вот так:
fill_in('timepicker-input.patternDailyStart.hasDatepicker', :with => $starttime)
И вот так:
within(:xpath,'//tbody/tr/div/input[contains(., "patternDailyStart")]'){ fill_in("#patternDailyStart", with: $starttime)}
И многие другие способы, но все равно ничего не заполняет эти поля..
Итак, я прошу некоторой помощи. Что я должен сделать, какие-либо предложения?
Спасибо … 🙂
Ответ №1:
Я думаю, что проще всего было бы найти входные данные по его классу patternDailyStart:
find(:css, '.patternDailyStart').set($starttime)