Самое простое решение вашего вопроса - использовать heredoc
page.execute_script <<~JS
var element = document.querySelector("select[name='user[user_locations_attributes][0][location_attributes][state]']").selectedIndex = '50';
JS
Хотя, если вам нужен элемент для чего-либо еще, вероятно, лучше найти элемент в ruby, а затем просто вызвать execute_script для элемента
el = find("select[name='user[user_locations_attributes][0][location_attributes][state]']")
el.execute_script('this.selectedIndex = 50;')
Как связанный вопрос - есть ли причина, по которой вы делаете это через JS, а не просто нажимаете на правильный вариант?Если вы просто просматриваете страницу, это не проблема, но если вы на самом деле что-то тестируете, это делает ваш тест недействительным, поскольку вы потенциально можете делать то, что пользователь не может
Поскольку вы прокомментировали, что вытестируя, вы действительно не должны делать это через JS, а вместо этого должны использовать select
или select_option
.select принимает строку параметров (которая у вас должна быть - иначе зачем нужен элемент select на первом месте)
select('the text of option', from: 'user[user_locations_attributes][0][location_attributes][state]')
select_option
вызывается непосредственно для элемента option, который можно найти в рядеспособы, такие как
find("select[name='user[user_locations_attributes][0][location_attributes][state]'] option:nth-child(50)").select_option