我需要为网站的登录功能编写c#Selenium代码。
提示用户输入密码中的三个不同字符,例如第3,第6和第8个字符,每个字符位于不同的文本字段中;每次用户尝试登录时,请求的字符都会改变,因此我很难自动化。在我的测试环境中,密码始终设置为TestPassword
HTML为与所请求的字符相关的文本字段分配Id,例如下面是对第5个字符的请求。这对于每个其他字符都是相同的,但是,数字会更改以表示所请求密码的字符。
<div class="form-type-password form-item-password-challenge-challenges-5 form-item form-group">
<label for="edit-password-challenge-challenges-5">
5
<sup>th</sup>
</label>
<input id="edit-password-challenge-challenges-5" class="form-control form-text" type="password" maxlength="1" size="1" name="password_challenge[challenges][5]" autocomplete="off" tabindex="2" placeholder="-"/
可以要求输入字符1到10.是否可以在C#中使用Selenium自动执行此操作?
非常感谢
答案 0 :(得分:1)
以下内容适合您。
//Your password string
const string testPassword = "TestPassword";
//find the id attribute that contains the index of character needs to be input
string str= driver.FindElement(By.CssSelector("input[id^='edit-password-challenge']")).GetAttribute("id");
//find the index of the char
int index = Convert.ToInt16(Regex.Match(str, "[0-9]+").ToString().Replace("\"", ""));
//find the char and convert to string so that can be used with SendKeys() method
string charToInput = testPassword[index-1].ToString();
//input the password using the SendKeys() method
driver.FindElement(By.CssSelector("the selector")).SendKeys(charToInput);