Pq as vezes o selenium não preenche todos os campos de um formulário corretamente?

Boa Tarde, estou automatizando o seguinte cenário utilizando python e selenium: “cadastro de um novo usuário”, no qual o sistema deve preencher todos os campos de um formulário e ao final clicar no botão “cadastrar”.
Campos:

  • nome
  • email
  • tel1
  • tel2
  • cpf
  • cep
  • senha

Ao rodar o mesmo código 10 vezes, notei que nem sempre o comportamento é o mesmo… Das 10 vezes que o código foi rodado, 6 vezes ele preencheu todos os campos corretamente, enquanto as outras 4 vezes ou ele preencheu alguns campos pela metade, ou simplesmente os pulou.

Sendo assim, gostaria de saber se alguém já teve esse problema e como resolve-lo.
Desde já agradeço

1 curtida

Existe alguma lógica usando ajax nessa tela onde há esses campos? Se tiver, talvez seja por isso.

1 curtida

Nesse formulário não existe nada em AJAX =/

Vc pode mandar o código desse teste pra gente ver?

Esse é o trecho de código:

import pytest
import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

class Texto pré-formatadoTeste_01(unittest.TestCase):
    """ Cadastrar um novo usuário como Pessoa Física """

def setUp(self):
    self.driver = webdriver.Chrome()
    self.driver.maximize_window()

def test_abr(self):
    #Step01
    driver = self.driver
    driver.get("https://www.linksite.com.br")

    #Step02(Formulario)
    self.driver.find_element_by_id("pessoaFisica").click() #seleciona a opção Pessoa Física
    
    campo_email = self.driver.find_element_by_id("txtEmail") #seleciona o campo email
    campo_email.clear()
    campo_email.send_keys("emailfake@email.com")
    
    campo_cpf = self.driver.find_element_by_id("txtCPF") #seleciona o campo CPF
    campo_cpf.clear()
    campo_cpf.send_keys("09890810018")

    campo_nome = self.driver.find_element_by_id("txtName") #seleciona o campo Nome
    campo_nome.clear()
    campo_nome.send_keys("Alan Wall")

    campo_celular = self.driver.find_element_by_id("txtTel1") #seleciona o campo Celular
    campo_celular.clear()
    campo_celular.send_keys("9876053210")

    campo_telefone2 = self.driver.find_element_by_id("txtTel2") #seleciona o campo Telefone 2
    campo_telefone2.clear()
    campo_telefone2.send_keys("4123433789")

    campo_senha = self.driver.find_element_by_id("txtPassword") #seleciona o campo Senha
    campo_senha.clear()
    campo_senha.send_keys("senha123")

    campo_cep = self.driver.find_element_by_id("txtCEP") #seleciona o campo CEP
    campo_cep.clear()
    campo_cep.send_keys("79610332")

def tearDown(self):
  self.driver.quit()

if __name__ == "__main__":
unittest.main()

Quando ocorre esse click. Como a tela reage?

Existem dois radio buttons:

  • Pessoa Física
  • Pessoa Jurídica

Após o click na opção “Pessoa Física”, o sistema apresenta os campos do formulário referentes ao cadastro de pessoas Física.

Imagino que seja algum javascript esteja sendo executado quando esses radio buttons são clicados. Talvez o selenium não esteja esperando o javascript processar em alguns momentos, fazendo com que fique esse comportamento estranho. Tente colocar um delay logo após o clique nos radios buttons.

1 curtida