综合监控 - Return 随机生成的密码字符用作变量
Synthetic Monitoring - Return randomly generated password characters to be used as variables
我目前正在使用 JavaScript 和 Selenium 驱动程序创建综合监控脚本。然而,网站登录包含随机 selected 密码字符验证。
例如登录会要求:
3rd character of your password:[input]
5th character of your password:[input]
7th character of your password:[input]
请求的字符每次都不同。
我需要 return 随机生成的密码字符并将它们用作变量,以允许我自动 select 无论登录身份验证请求我的密码。
到目前为止我的脚本中有这个,但是它不起作用:
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);
不幸的是,由于私人信息,我无法包含任何细节、网站等。
如果我没猜错,你想为你的密码创建一个数组,例如。
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]
。
(如果您正在从网站某处读取密码,您可能希望将密码字符串转换为字符数组。查看此 post 以了解实现此目的的简单方法。)
所以最终我成功了,我是这样做的:
1.) 首先 return 包含请求的密码字符的元素并拆分该字符串,在我的示例中,我必须在新行上拆分。
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 提供的密码数组创意。
我目前正在使用 JavaScript 和 Selenium 驱动程序创建综合监控脚本。然而,网站登录包含随机 selected 密码字符验证。
例如登录会要求:
3rd character of your password:[input]
5th character of your password:[input]
7th character of your password:[input]
请求的字符每次都不同。
我需要 return 随机生成的密码字符并将它们用作变量,以允许我自动 select 无论登录身份验证请求我的密码。
到目前为止我的脚本中有这个,但是它不起作用:
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);
不幸的是,由于私人信息,我无法包含任何细节、网站等。
如果我没猜错,你想为你的密码创建一个数组,例如。
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]
。
(如果您正在从网站某处读取密码,您可能希望将密码字符串转换为字符数组。查看此 post 以了解实现此目的的简单方法。)
所以最终我成功了,我是这样做的:
1.) 首先 return 包含请求的密码字符的元素并拆分该字符串,在我的示例中,我必须在新行上拆分。
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 提供的密码数组创意。