0

我目前正在使用 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); 

不幸的是,由于私人信息,我不能包括任何细节、网站等。

4

2 回答 2

1

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

 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 数组中的第 7 个位置pwd[6]

(如果您正在从网站的某处读取密码,您可能希望将密码字符串转换为 Char 数组。查看这篇文章以获得实现此目的的简单方法。)

于 2017-11-28T14:09:58.170 回答
0

所以最终我得到了这个工作,我是这样做的:

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

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

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

4.) 现在每个整数都为-1(数组从 0 开始)

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

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 的密码数组创意。

于 2017-11-30T11:01:32.410 回答