Невозможно найти видимое поле ноль, которое не отключено - PullRequest
0 голосов
/ 20 декабря 2018

Я не уверен, что я здесь делаю неправильно, так как я совершенно новичок в капибаре.Я могу найти элемент с

all('.mold_table_input').last
#<Capybara::Node::Element tag="input" path="/html/body/md-content/section/md-content/md-tabs/md-tabs-content-wrapper/md-tab-content/div/div/div/md-card/md-card-content/div/form/md-content/table/tbody/tr[1]/td[1]/input">

, но когда я пытаюсь all('.mold_table_input').last.fill_in(with: '02'), я получаю следующую ошибку

Capybara::ElementNotFound: Unable to find visible field nil that is not disabled within #<Capybara::Node::Element tag="input" path="/html/body/md-content/section/md-content/md-tabs/md-tabs-content-wrapper/md-tab-content/div/div/div/md-card/md-card-content/div/form/md-content/table/tbody/tr[3]/td[12]/input">

Я использую angularjs на моем внешнем интерфейсе.Кроме того, когда я проверяю видимость как all('.mold_table_input').last.visible?, он возвращает true

Ответы [ 2 ]

0 голосов
/ 26 декабря 2018

Я не знаю подробностей, просто публикуя, чтобы помочь другим, следующая строка сделала трюк

find('.mold_table_input', match: :first).set('06')

Я смог установить значение поля ввода, найдя сначала и использовав set вместо fill_in

0 голосов
/ 20 декабря 2018

Какую версию Capybara вы используете?Я предполагаю, что <3.7, потому что там была добавлена ​​возможность вызова <code>fill_in для элемента, который будет изменен.До 3.7 он только пытался найти действующего потомка для работы.Даже в 3.7+ использование fill_in, как вы пытаетесь, не рекомендуется, когда у вас есть простой уникальный локатор, так как он добавляет накладные расходы без всякой причины.В этом случае вы имеете дело с уникальным локатором элементов (идентификатор элемента должен быть уникальным на HTML-странице), поэтому вам не нужно использовать 'all (...). Last`, и вам нужно просто выполнить

  fill_in ‘mold_table_input’, with: ‘02’

В связанной заметке: если вам когда-либо нужно найти элемент для более сложного взаимодействия, вам действительно следует предпочесть find вместо all, если у вас есть элементы, которые могут быть расположены уникальным образом.Не только find будет быстрее, но и all имеет несколько тонких ограничений на динамические страницы.

...