代码之家  ›  专栏  ›  技术社区  ›  Guru

综合监控-返回随机生成的密码字符作为变量

  •  0
  • Guru  · 技术社区  · 7 年前

    我目前正在使用JavaScript和Selenium驱动程序创建一个合成监控脚本。然而,网站登录由随机选择的密码字符验证组成。

    例如,登录将要求:

    3rd character of your password:[input]
    5th character of your password:[input]
    7th character of your password:[input]
    

    请求的字符每次都会更改。

    我需要返回随机生成的密码字符,并将其用作变量,以允许我自动从密码中选择任何登录身份验证请求。

    到目前为止,我的脚本中有这个,但它不起作用:

        var password_chars = element.getText();
        var char1 = parseInt(password_chars[1].match(/<div>(\d+)/)[1] -1);
        var char2 = parseInt(password_chars[2].match(/<div>(\d+)/)[1] -1);
        var char3 = parseInt(password_chars[3].match(/<div>(\d+)/)[1] -1); 
    

    遗憾的是,由于私人信息,我无法提供任何细节、网站等。

    2 回复  |  直到 7 年前
        1
  •  1
  •   halfer    7 年前

    如果我做对了,你想为你的密码创建一个数组,例如。

     char[] pwd = { 'p', 'a', 's', 's', 'w', 'o', 'r', 'd' };
    

    然后,您将检查密码中的位置。

    使用您的示例:

    3rd character of your password:[input]
    5th character of your password:[input]
    7th character of your password:[input]
    

    对于您使用的第一个输入 pwd[2] ,第二次 pwd[4] 最后是pwd阵列中的第三个第七个位置 pwd[6] .

    (如果您正在从网站的某个地方读取密码,您可能希望将密码字符串转换为字符数组。请看这个 post 这是一种简单的实现方法。)

        2
  •  0
  •   halfer    7 年前

    最终我成功了,我是这样做的:

    1)首先返回包含请求的密码字符的元素并拆分该字符串,在我的示例中,我必须拆分到新行。

    2.)创建一个数组以包含拆分字符串。

    3)将每个字符请求解析为int。这是为了删除(th)或(nd)。例如,第2->2.

    4.)现在,从每个int中取-1(数组从0开始)

    5.)将int应用于密码数组以接收正确的字符。

    6)使脚本将正确的字符作为键发送。

    包括以下代码:

    $browser.findElement($driver.By.className('answer')).getText()
    .then(function(reqpwdchars) //7
    {
            console.log(reqpwdchars);
            var psplit = [];
            psplit = reqpwdchars.split("\n")
    
            var char1 = psplit[0]
            var int_c1= parseInt(char1)
            int_c1=int_c1-1
    
            var char2 = psplit[1]
            var int_c2= parseInt(char2)
            int_c2=int_c2-1;
    
            var char3 = psplit[2]
            var int_c3= parseInt(char3)
            int_c3=int_c3-1
    
            var password_array = ['e','x','a','m','p','l','e'];
    
            var pc1 = password_array[int_c1];
            var pc2 = password_array[int_c2];
            var pc3 = password_array[int_c3]
    
    
     $browser.findElement($driver.By.id('char1-ID')).sendKeys(pc1)
            .then(function() //8
       {    
    
    $browser.findElement($driver.By.id('char2-ID')).sendKeys(pc2)
            .then(function() //9
       {  
    
    $browser.findElement($driver.By.id('char3-ID')).sendKeys(pc3)
            .then(function() //10
       {    
    

    我要感谢John Kl的密码阵列想法。

    推荐文章