Oi gente! Estou tentando desenvolver um sisteminha de preenchimento automático de um site com Selenium e WebDriver. Ele pega as informações que vão ser inseridas de um arquivo externo. Quando executo o sistema redireciona tudo certo, mas quando chega na parte que deve iniciar o preenchimento a pagina do site fecha e o sistema continua rodando como se tivesse preenchendo, mas não está. Já coloquei Waits,Sleep e fiz uma função para digitar lentamente, mas não tive resultado.
def preenchimento_parte2(self,line):
try:
time.sleep(5)
#Espera até que polo passiva seja visivel e clica
wait = WebDriverWait(driver, 100)
wait.until(EC.element_to_be_clickable((By.ID, 'addParteP')))
driver.find_element_by_xpath("//span[@id='addParteP']/i").click()
time.sleep(5)
#Seleciona 'ente ou autoridade'
driver.find_element_by_id("preCadastroPessoaFisicaForm:tipoPessoaDecoration:tipoPessoa:2").click()
time.sleep(5)
#Localizar TextField do ente ou autoridade
wait.until(EC.visibility_of_all_elements_located((By.XPATH, '//*[@id="preCadastroPessoaFisicaForm:divAutoridade"]/div[1]/div[2]')))
time.sleep(5)
#Seleciona e digita chave em ente ou autoridade
driver.find_element_by_css_selector('#preCadastroPessoaFisicaForm\:j_id2023\:pessoaAutoridadeSuggest')
driver.find_element_by_css_selector("#preCadastroPessoaFisicaForm\:j_id2023\:pessoaAutoridadeSuggest").click()
time.sleep(5)
driver.find_element_by_css_selector("#preCadastroPessoaFisicaForm\:j_id2023\:pessoaAutoridadeSuggest").clear()
send_delayed_keys(driver.find_element_by_css_selector("#preCadastroPessoaFisicaForm\:j_id2023\:pessoaAutoridadeSuggest"), self.line, 0.6)
#Espera a visibilidade das sugestões, preciona para baixo e enter
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#preCadastroPessoaFisicaForm\:j_id2023\:j_id2038")))
driver.find_element_by_css_selector("#preCadastroPessoaFisicaForm\:j_id2023\:pessoaAutoridadeSuggest").send_keys(Keys.DOWN)
driver.find_element_by_css_selector("#preCadastroPessoaFisicaForm\:j_id2023\:pessoaAutoridadeSuggest").send_keys(Keys.ENTER)
#Espera a visibilidade do botão e confirma cadastro
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#preCadastroPessoaFisicaForm\:btnConfirmarCadastro")))
driver.find_element_by_css_selector("#preCadastroPessoaFisicaForm\:btnConfirmarCadastro").click()
#Espera a visibilidade da opção endereço e clica
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#formInserirParteProcesso\:enderecoUsuario_lbl" )))
driver.find_element_by_css_selector("#formInserirParteProcesso\:enderecoUsuario_lbl").click()
print('clicou em endereço') #Espera a visibilidade e seleciona primeiro endereço
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#formInserirParteProcesso\:cadastroPartePessoaEnderecoenderecoGridTabList\:0\:j_id5252" )))
driver.find_element_by_css_selector("#formInserirParteProcesso\:cadastroPartePessoaEnderecoenderecoGridTabList\:0\:j_id5252").click()
#Espera visibilidade do botão 'Vincular parte ao processo' e clica
print('selecionou em endereço')
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#formInserirParteProcesso\:btnInserirParteProcesso" )))
driver.find_element_by_css_selector("#formInserirParteProcesso\:btnInserirParteProcesso").click()
print('Vinculou')
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, '#gridPartesPoloPassivo > div > span')))
time.sleep(5)
except Exception as e:
self.driver.quit()
def manipulacaoArquivos(self, arquivoPrimeiro, arquivoSegundo):
self.pathPrimeiro = arquivoPrimeiro
self.pathSegundo = arquivoSegundo
if (self.pathPrimeiro):
self.arquivoPrimeiro = open(self.pathPrimeiro, 'r', encoding='UTF-8')
for linha in self.arquivoPrimeiro:
print("Dentro da função: " + linha)
self.preenchimento_parte2(linha)
time.sleep(5)
if (self.pathSegundo):
self.arquivoSegundo = open(self.pathSegundo, 'r', encoding='UTF-8')
for linha in self.arquivoSegundo:
print("Dentro da função: " + linha)
self.preenchimento_parte2(linha)
time.sleep(5)