Я разрабатываю бота, чтобы веб-скинуть некоторую информацию с определенного сайта.
На этом веб-сайте нам необходимо заполнить динамическую форму:
- План медицинского страхования (Выбрать);
- Адрес штата (Выбрать)
- Адрес города (динамический выбор с данными, загруженными в предыдущее поле)
- Поиск по (радиокнопка)
В Chrome эта кнопка переключает нас на другой интерфейс (с тем же URL), но в Chromedriver это не так.
Я проверил код в этой радиокнопке и получил событие onclick:
jsf.ajax.request('viewns_Z7_MPD81G80P843E0QQK0CK5L2GC1_:formInicio:tipoPesquisa',event,{execute:'@this viewns_Z7_MPD81G80P843E0QQK0CK5L2GC1_:formInicio:panelgrid-g-recaptcha-response ',render:'viewns_Z7_MPD81G80P843E0QQK0CK5L2GC1_:formBuscaSobreOMapa viewns_Z7_MPD81G80P843E0QQK0CK5L2GC1_:formInicio viewns_Z7_MPD81G80P843E0QQK0CK5L2GC1_:formInicio:panelGridSelectOneRadioTipoPesquisa ',onerror:mostrarErroGenerico,onevent:selecionarTipoPesquisa,'javax.faces.behavior.event':'click'})
Как мне пройти этот шаг?
(Я попытался запустить этот код JavaScript в строке URL и выполнить все шаги вручную, но не работает.)
Весь мой код:
#!/usr/bin/env python
# coding: utf-8
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
# Create a browser instance
gc = webdriver.Chrome()
gc.maximize_window()
# Open the url
gc.get('https://www.bradescoseguros.com.br/clientes/produtos/plano-saude/consulta-de-rede-referenciada')
time.sleep(2)
# Select "Non Client" mode
non_client = gc.find_element_by_name('viewns_Z7_MPD81G80P843E0QQK0CK5L2GC1_:formInicio:clNotClient')
non_client.click()
time.sleep(2)
# Get plans
lp = gc.find_element_by_id('lista-redes')
lp_list = lp.find_element_by_tag_name('ul')
lp_options = lp_list.find_elements_by_tag_name('li')
lp_options[0].click()
time.sleep(2)
# Select states
le = gc.find_element_by_id('lista-estado')
le_list = le.find_element_by_tag_name('ul')
le_options = le_list.find_elements_by_tag_name('li')
states_dict = {
'ACRE': '00',
'ALAGOAS': '01',
'AMAZONAS': '02',
'AMAPA': '03',
'BAHIA': '04',
'CEARA': '05',
'DISTRITO FEDERAL': '06',
'ESPIRITO SANTO': '07',
'GOIAS': '08',
'MARANHAO': '09',
'MINAS GERAIS': '10',
'MATO GROSSO DO SUL': '11',
'MATO GROSSO': '12',
'PARA': '13',
'PARAIBA': '14',
'PERNANBUCO': '15',
'PIAUI': '16',
'PARANA': '17',
'RIO DE JANEIRO': '18',
'RIO GRANDE DO NORTE': '19',
'RONDONIA': '20',
'RORAIMA': '21',
'RIO GRANDE DO SUL': '22',
'SANTA CATARINA': '23',
'SERGIPE': '24',
'SAO PAULO': '25',
'TOCANTINS': '26'
}
# Select SP state
le_options[25].click()
time.sleep(2)
# Select cities
lc = gc.find_element_by_id('lista-cidade')
lc_list = lc.find_element_by_tag_name('ul')
lc_options = lc_list.find_elements_by_tag_name('li')
i = 0
for c in lc_options:
print('ID: {}\nCidade:{}\n'.format(i, c.find_element_by_tag_name('a').text))
i+=1
lc_options[110].click()
time.sleep(2)
# Select a establishment
les = gc.find_element_by_id('lista-tipo-pesquisa')
les_options = les.find_elements_by_xpath('//input[@type="radio"]')
i = 0
for r in les_options:
print('ID: {}\nOpcoes:{}\n'.format(i, r.get_attribute('value')))
i+=1
time.sleep(2)
les_options[2].click()
#gc.find_element_by_class_name('form').find_element_by_tag_name('form').submit()
# Close Browser
#gc.quit()