Skip to content

Instantly share code, notes, and snippets.

@pedroppinheiro
Last active March 18, 2020 12:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pedroppinheiro/8f4e3f3fdb8936efb59b7b444d6c5f74 to your computer and use it in GitHub Desktop.
Save pedroppinheiro/8f4e3f3fdb8936efb59b7b444d6c5f74 to your computer and use it in GitHub Desktop.
scripts para selenium IDE

Script para gerar CPF aleatorio

versão normal:

OBS: O algoritmo possui um bug. Nem todo CPF que ele gera é válido. Necessário corrigir.

(function () {
  aleatorio = function () {
  aleat = Math.floor(Math.random() * 999);
 //o preenchimento dos zeros à esquerda é mais facil com a função padStart da string
  return ("" + aleat).padStart(3, '0'); 
};

//o quarto parametro(n4) só será recebido para o segundo digito
dig = function (n1, n2, n3, n4) { 

  //as concatenações todas juntas uma vez que são curtas e legíveis
  nums = n1.split("").concat(n2.split(""), n3.split(""));

  if (n4){ //se for o segundo digito coloca o n4 no sitio certo
    nums[9] = n4;
  }

  x = 0;

  //o j é também iniciado e incrementado no for para aproveitar a própria sintaxe dele
  //o i tem inicios diferentes consoante é 1º ou 2º digito verificador
  for (i = (n4 ? 11:10), j = 0; i >= 2; i--, j++) {
    x += parseInt(nums[j]) * i;
  }

  y = x % 11;
  //ternário aqui pois ambos os retornos são simples e continua legivel
  return y < 2 ? 0 : 11 - y; 
};

gerarCpf = function () {
  num1 = aleatorio(); //aleatorio já devolve string, logo não precisa de toString
  num2 = aleatorio();
  num3 = aleatorio();

  dig1 = dig(num1, num2, num3); //agora só uma função dig
  dig2 = dig(num1, num2, num3, dig1); //mesma função dig aqui

  //aqui com interpolação de strings fica bem mais legivel
  return num1+"."+num2+"."+num3+"-"+dig1+dig2;//`${num1}.${num2}.${num3}-${dig1}${dig2}`;
};

return gerarCpf();
})()

versão para o selenium (minificada):

    return (aleatorio=function(){return aleat=Math.floor(999*Math.random()),(""+aleat).padStart(3,"0")},dig=function(n,a,t,u){for(nums=n.split("").concat(a.split(""),t.split("")),u&&(nums[9]=u),x=0,i=u?11:10,j=0;i>=2;i--,j++)x+=parseInt(nums[j])*i;return y=x%11,y<2?0:11-y},gerarCpf=function(){return num1=aleatorio(),num2=aleatorio(),num3=aleatorio(),dig1=dig(num1,num2,num3),dig2=dig(num1,num2,num3,dig1),num1+"."+num2+"."+num3+"-"+dig1+dig2},gerarCpf())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment