пытаюсь почистить эту страницу селеном и питоном - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь очистить эту страницу / iframe с селеном / питоном, но не могу вставить текст в эту выбранную форму.

ссылка

from selenium import webdriver
from time import sleep

driver = webdriver.Firefox()
url = 'http://web.transparencia.pe.gov.br/despesas/despesa-geral/'
driver.get(url)
sleep(10)
driver.switch_to.frame(driver.find_element_by_tag_name("iframe"))
el = driver.find_element_by_xpath("//*[@id='html_selectug']")
el.click()

Когда я пытаюсь получить список:

el_cl = el.find_element_by_class_name('chzn-select')
el_cl.click()

Возникает исключение

selenium.common.exceptions.ElementNotInteractableException: Message: Element <select class="chzn-select"> could not be scrolled into view

какие-либо советы?

Ответы [ 2 ]

0 голосов
/ 10 ноября 2019

Амит YR дал мне отличную подсказку. Опции неактивны для отображения (вы можете увидеть код серого цвета, если хотите проверить элементы). Я должен был сделать их активными с помощью кода js.

from selenium import webdriver
from time import sleep

driver = webdriver.Firefox()
url = 'http://web.transparencia.pe.gov.br/despesas/despesa-geral/'
driver.get(url)
sleep(10)

# activate the options
js = "document.getElementById('iframe').contentWindow.document.getElementsByClassName('chzn-select')" \
     "[1].style.display = 'inline';"
driver.execute_script(js)

# now, I'm able to grab the listbox options
driver.switch_to.frame(driver.find_element_by_tag_name("iframe"))
options = driver.find_elements_by_xpath("//*[@id='html_selectug']/select/option")
options[4].click()
0 голосов
/ 07 ноября 2019

Имя класса 'chzn-select' не является правильным классом для списка, который вы пытаетесь щелкнуть (тот, который указан на скриншоте).

Вы можете попробовать получить все параметры и щелкнуть конкретный параметрпо тексту, как показано ниже

AllOptions = driver.find_elements_by_xpath("//*[@id='html_selectug']/select/option")
for option in AllOptions:
             if(option.get_attribute("value")=="option text you want to click")
                option.click()
                break
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...