Установка значения для элемента ввода в селен Python - PullRequest
0 голосов
/ 01 января 2019

Я пытаюсь изменить значение элемента тега ввода.

Вот тег: <input type="hidden" id="hiRequestAccessType" data-bind="value: requestAccessTypeStr" value="2">

Я хочу изменить значение на "2,1".

Основано на обсуждении на Вместо этого установите значение вводаof sendKeys () - селен узел webdriver nodejs , я пытался использовать execute_script, но значение остается неизменным.

Я пробовал это:

passwordcheck_input_element = driver.find_element_by_xpath('//*[@id="hiRequestAccessType"]') . ###THIS DOESNT THROW ERRORS
new_value = "2,1"

driver.execute_script("arguments[0].value = arguments[1].toString()", passwordcheck_input_element, new_value)
# driver.execute_script("arguments[0].value = '" + new_value + "'", passwordcheck_input_element) . ###TRIED THIS IN LIEU OF ABOVE

Для любой альтернативы код выполняется, но значение остаетсябез изменений от визуального осмотра.Я также попробовал две вышеупомянутые альтернативы, используя 'setAttribute' вместо прямого, того же (без изменений) результата.

Обратите внимание, что веб-страница - это форма, где нажатие на флажок изменяет значение на "2,1", так какжелательно.(Но если я пытаюсь найти элемент флажка, я получаю сообщение о том, что он не активен, следовательно, этот маршрут).

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

Ответы [ 2 ]

0 голосов
/ 02 января 2019

driver.find_element_by_xpath ('// * [@ id = "hiRequestAccessType"]'). SetAttribute ("value", "1")

Short, который можно выбрать с помощью элемента name xpath или css после выбораВы можете изменить с помощью функции .setAttribute свое значение.Также вы можете получить текущее значение выбранного элемента с помощью функции getAttribute. Для имитации установите флажок: .setAttribute ("флажок", "проверен")

0 голосов
/ 02 января 2019

Не могли бы вы попробовать приведенный ниже код?

passwordcheck_input_element = driver.find_element_by_id("hiRequestAccessType")
driver.execute_script("arguments[0].value = '2,1';", passwordcheck_input_element) 

Вы также можете управлять объектом-флажком с помощью выполнения javascript, если он не активен.

driver.execute_script("document.getElementById('hiRequestAccessType').checked = true;")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...