Я искал способ изменить элемент веб-страницы и пока не нашел (или не понял), как это сделать.В приведенном выше элементе я хочу иметь возможность изменить числовое значение на другое число, которое представлено заполнителем (т. Е. Кивком для числа розыгрышей. Или я должен делать это вручную каждый раз, когда я запускаю программу?).
Моя операционная система - Ubunt 18.04, в которой используется новейшая среда разработки Python, selenium и pycharm.
Это всего лишь пара веб-сайтов, которые я посетил, и я посетил много.
https://www.youtube.com/watch?v=tdgAIDR9snc
http://allselenium.info/javascript-using-python-selenium-webdriver/
Установить значение ввода вместо sendKeys () - узел доступа к селену
WEBELEMENT:
<select name="ctl00$MainContent$ddlRange" id="ctl00_MainContent_ddlRange">
<option selected="selected" value="1"> Single Draw</option>
<option value="2"> 2 Consecutive</option>
<option value="3"> 3 Consecutive</option>
<option value="4"> 4 Consecutive</option>
<option value="5"> 5 Consecutive</option>
<option value="10">10 Consecutive</option>
<option value="20">20 Consecutive</option>
</select>
И мой основной код:
from Selenium import WebDriver
browser = webdriver.Chrome('/usr/bin/chromedriver')
page=browser.get("whatever address of whatever webpage interested in")
elem=browser.find_element_by_css_selector("#ctl00_MainContent_ddlRange")
browser.execute_script("arguments[0].setAttribute('<option selected="selected" value="20">','20 Consecutive</option>')", elem)
Моя цель - изменить значение значения в первой части тега параметра с:
<option selected="selected" value="1"> Single Draw</option>
на следующее:
<option selected="selected" value="44"> Single Draw</option>
В скрипте execute_script я всегда получаю ожидаемый конец оператора после последнего).Я также получаю ожидаемые ошибки ',' или ')' в областях "selected" и "20"
Также к ним относятся селекторы css и xpath:
for <select name="ctl00$MainContent$ddlRange" id="ctl00_MainContent_ddlRange">
selector = #ctl00_MainContent_ddlRange
xpath = //*[@id="ctl00_MainContent_ddlRange"]
for <option>
selector = #ctl00_MainContent_ddlRange > option:nth-child(1) (note that nth-child() can be 1 - 7)
xpath = //*[@id="ctl00_MainContent_ddlRange"]/option[1] (note that option[] can also be 1 - 7)
У меня есть веб-страница, сохраненная на диск, и я могу зайти в html и изменить это число, затем сохранить файл, и когда я нажимаю на него, он работает.Я просто хочу иметь возможность автоматизировать это.
Любая помощь очень ценится
Idzireit
РЕДАКТИРОВАТЬ:
Пока это самый близкий у меня естьприйти на самом деле вставив значение, которое я хочу.Новый код выглядит следующим образом:
browser.execute_script("""arguments[0].setAttribute
('select', '<option selected="selected" value="nod"> &snbsp;draws </option>')""", get_draws)
Результаты таковы:
<option value="20" select="<option selected="selected" value="nod"> &nbsp;&snbsp;draws </option>">20 Consecutive</option>
Вводимый мной javascript вставляется в середину элемента, который я пытаюсь изменить(обратите внимание, что последовательность опций повторяется в середине первой скобки).
Как я могу исправить это, чтобы это выглядело так:
<option selected="selected" value="a number I am trying to change"> Draw<\option>
РЕДАКТИРОВАТЬ РЕШЕНО:
Разобрался, как изменить значение элемента.Мне пришлось изменить метод поиска этого элемента следующим образом:
get_draws = browser.find_element_by_tag_name('option')
Тогда моя следующая строка была довольно простой:
browser.execute_script("""arguments[0].setAttribute('value', '100')""", get_draws)