2
respostas

selenium interagir com elemento oculto

não consigo informar a data para análise da erro. preciso informar ano, mes e dia, com sen_keys não deu certo. Alguem sabe como colocar a data?

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select

servico = Service(ChromeDriverManager().install())
navegador = webdriver.Chrome(service=servico)

navegador.get("https://www.cepea.esalq.usp.br/br/consultas-ao-banco-de-dados-do-site.aspx")

navegador.find_element(By.XPATH,'//*[@id="frm-selecionar"]/div[1]/div/div[2]/div/div[2]/div/label[12]').click()

time.sleep(0.5)

navegador.find_element(By.XPATH,'//*[@id="periodo-de"]').click()
elemento = navegador.find_element(By.XPATH, '//*[@id="periodo-ate_root"]/div/div/div/div/div[1]/select[1]')
elemento_slct = Select(elemento)
elemento_slct.select_by_value('2022')
2 respostas

Oi!

Para selecionar a data corretamente no site do CEPEA usando o Selenium, você precisa interagir com os elementos de seleção de data. O site parece ter um seletor de data personalizado, portanto, você precisa clicar no campo de data e selecionar os valores corretos.

Aqui está um exemplo de como selecionar a data usando o Selenium:

# Importe as bibliotecas necessárias
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
import time

# Configuração do WebDriver
servico = Service(ChromeDriverManager().install())
navegador = webdriver.Chrome(service=servico)

# Acesse a página do CEPEA
navegador.get("https://www.cepea.esalq.usp.br/br/consultas-ao-banco-de-dados-do-site.aspx")

# Clique no campo de seleção de produto desejado (exemplo: Açúcar)
navegador.find_element(By.XPATH, '//*[@id="frm-selecionar"]/div[1]/div/div[2]/div/div[2]/div/label[2]').click()

# Aguarde um curto período de tempo para que a página carregue completamente
time.sleep(0.5)

# Clique no campo de seleção de período "De"
navegador.find_element(By.ID, 'periodo-de').click()

# Selecione o ano desejado (exemplo: 2022)
elemento_ano = navegador.find_element(By.XPATH, '//*[@id="periodo-de_root"]/div/div/div/div/div[1]/select[1]')
selecionar_ano = Select(elemento_ano)
selecionar_ano.select_by_value('2022')

# Selecione o mês desejado (exemplo: Janeiro)
elemento_mes = navegador.find_element(By.XPATH, '//*[@id="periodo-de_root"]/div/div/div/div/div[1]/select[2]')
selecionar_mes = Select(elemento_mes)
selecionar_mes.select_by_value('1')

# Selecione o dia desejado (exemplo: 1)
elemento_dia = navegador.find_element(By.XPATH, '//*[@id="periodo-de_root"]/div/div/div/div/div[1]/select[3]')
selecionar_dia = Select(elemento_dia)
selecionar_dia.select_by_value('1')

# Clique no campo de seleção de período "Até"
navegador.find_element(By.ID, 'periodo-ate').click()

# Selecione o ano desejado (exemplo: 2022)
elemento_ano_ate = navegador.find_element(By.XPATH, '//*[@id="periodo-ate_root"]/div/div/div/div/div[1]/select[1]')
selecionar_ano_ate = Select(elemento_ano_ate)
selecionar_ano_ate.select_by_value('2022')

# Selecione o mês desejado (exemplo: Dezembro)
elemento_mes_ate = navegador.find_element(By.XPATH, '//*[@id="periodo-ate_root"]/div/div/div/div/div[1]/select[2]')
selecionar_mes_ate = Select(elemento_mes_ate)
selecionar_mes_ate.select_by_value('12')

# Selecione o dia desejado (exemplo: 31)
elemento_dia_ate = navegador.find_element(By.XPATH, '//*[@id="periodo-ate_root"]/div/div/div/div/div[1]/select[3]')
selecionar_dia_ate = Select(elemento_dia_ate)
selecionar_dia_ate.select_by_value('31')

# Execute outras ações ou consultas necessárias
# ...

# Feche o navegador
navegador.quit()

Certifique-se de ajustar os seletores XPath de acordo com a estrutura atual da página. O exemplo acima seleciona o produto "Açúcar" e define a data de 1º de janeiro de 2022 até 31 de dezembro de 2022. Você pode ajustar os valores conforme necessário para suas consultas.

Oii, Carlos! Tudo bem?

Diante do contexto que você trouxe, uma alternativa é usar o método execute_script, para que execute um script JavaScript que altera o valor do elemento. Por exemplo:

data = "2022-01-01"
navegador.execute_script("arguments[0].value = arguments[1]", elemento, data)

No exemplo, a variável data contém a data que você deseja definir, e o método execute_script é usado para atribuir esse valor ao elemento.

Substitua o valor "2022-01-01" pela data desejada, veja também se o formato da data está correto, como esperado pelo elemento e realize os testes.

Espero que a sugestão seja um bom ponto de partida. Qualquer dúvida, compartilhe no fórum.

Bons estudos, Carlos!