select(«Acura», : from=>’js-emu-make-id’, видимый: false) не отражается при запуске save_and_open_page. Он по-прежнему кажется пустым. Почему?

#javascript #ruby #capybara

#javascript #ruby #капибара

Вопрос:

Я практикую / тестирую capybara и столкнулся с проблемой выбора элементов из выпадающего меню.

Способ работы веб-сайта заключается в том, что вы можете перейти к следующему выпадающему списку, только если вы заполнили предыдущий, и я могу заполнить последний выпадающий список, но когда я открываю страницу, предыдущие два поля остаются пустыми.


интернет = Capybara.current_session

url = «https://repairpal.com/estimator«

интернет.url для посещения

internet.select(«Acura», : from=>’js-emu-make-id’, видимый: false)

internet.select(«1993», :from=>’js-emu-year-id’, видимый: false)

internet.select(‘Integra’, :from=>’js-emu-base-vehicle-id’, видимый: false)

internet.fill_in(‘адрес’, :с => ‘10018’)

internet.save_and_open_page

ожидаемый / желаемый результат
реальный результат Ожидаемый результат заключается в том, что когда я открываю страницу, все заполняется; однако, когда я открываю страницу, я вижу два пустых выпадающих списка, но третий заполнен «Integra», так что работает только эта часть. Большое спасибо за помощь.

Ответ №1:

save_and_open_page сохранить текущее состояние html-элементов с их атрибутами. Это не включает состояние свойств html-элементов, поэтому оно может не отражать фактическое текущее состояние страницы (например. изменение свойства value элемента не изменяет атрибут value, и атрибут — это то, что сохраняется). Если вы действительно хотите увидеть текущее состояние, которое вы должны использовать save_and_open_screenshot .

Кроме того, есть ли причина, по которой вы передаете visible: false все эти select вызовы? Если вам действительно нужно использовать visible: false для поиска элементов, то выбор должен завершиться ошибкой, поскольку вы будете делать то, что пользователь не смог бы.