0
respostas

Pagina fecha antes de iniciar preenchimento - Selenium e WebDriveR

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)