对于C#中的编程/硒自动化非常新,并且遇到了一些我正在努力解决的绊脚石,我在这里/ google环顾四周但是没有找到符合我要求的东西,我可以如果是这样的话,请将我的问题措辞略有错误,请原谅我。
我需要实现的目标, 在输入用户名/密码后登录网站时,系统会提示您输入密码,特别是随机生成的组合 - 例如“请输入数字1,2和& 3你的PIN“ - 其中(在例子中)1,2,3可以是1到6之间的任何东西(总是按时间顺序排列),消息本身,”,“和”&“位置不会改变 - 只有数字。
** 包含邮件的“行”信息(和数字) **
内部HTML
请输入数字 1 , 3 &您的个人识别码 5
外部HTML
请输入数字 1 , 3 &您的个人识别码 5CSS选择器 h2.login-桌面仅
XPATH / HTML /体/部分[2] / DIV / DIV / DIV /形式/ DIV / DIV [2] / DIV [1] / DIV / H2
对于这种情况,我使用的是“UAT网站”,所以我可以控制PIN,假设它总是123456 - 所以1 = 1,2 = 2,3-3等等。我无法确定每次运行测试时会询问哪些数字。
如何从'请输入数字XXXXX'中“删除”文本并解析(我认为这是正确的单词)数据来分隔'刮掉的'数字,然后依次使用该数据来匹配预先声明'1 = 1'等等,然后最终在键盘上选择正确的数字?
我想这将需要一个IF语句列表,但我仍然不知道如何刮取/存储所请求的数字。理想情况下,我希望使用c#来保留它(但是,如果存在任何Java示例,我可以使用它,因为同事正在使用java selenium - 我们都是非常新的)
非常感谢任何建议。
(编辑添加评论代码)
非常感谢回到我身边,我尝试了那段代码,它找到了'string'中包含的整数的索引位置。目前它“打印”了索引位置,但我怎样才能获得该值而不是打印它? 我想如果我可以将它分配给一个变量,那么我可以将这三个数字拆分为一个唯一的变量,该变量具有覆盖IF 1的IF语句 - 然后是1 IF 2 - 然后是2,依此类推。如果这有道理?
public class Some_Class {
public static void main(String[] args) {
WebDriver driver = new SafariDriver();
driver.get("SomeWebsite");
driver.findElement(By.id("username")).sendKeys("XXXXXXX");
driver.findElement(By.id("password")).sendKeys("XXXXXXX ");
driver.findElement(By.id("login-button")).click();
/* --- This was my original plan to set the xpath as a string and then replace all with numbers only. This did not work as I thought.
{
WebElement str = driver.findElement(By.xpath("/html/body/section[2]/div/div/div/form/div/div[2]/div[1]/div/h2"));
String numberOnly = str.replaceAll("[^0-9]", "");
}
*/
WebElement option = driver.findElement(By.xpath("/html/body/section[2]/div/div/div/form/div/div[2]/div[1]/div/h2"));
String word=option.getText();
String check[]=word.split("");
for(int i=0; i<check.length ; i++)
{
if( Pattern.matches("\\d", check[i]))
{
System.out.println("found integer at i = "+ i);
}
}
}
}
答案 0 :(得分:0)
输入:你需要刮一个包含&#39;的字符串。整数和字母&#39;并且只返回整数。
这是我使用Selenium,Java完成的一个例子。 请更改您的URL和WebElement以进行删除。
driver.get("https://en.wikipedia.org/wiki/Main_Page");
WebElement option = driver.findElement(By.xpath("//*[@id=\"articlecount\"]"));
String word=option.getText();
//here you get - 5,589,206 articles in English
String check[]=word.split("");
for(int i=0; i<check.length ; i++)
{
if( Pattern.matches("\\d", check[i]))
{
System.out.println("found integer at i = "+ i);
}
}
基本上会打印出你有整数的索引。使用它们
答案 1 :(得分:0)
如果是挑战字符串,则说
string pinRequest = "Please enter pin digits 1,4 & 8 of your pin.";
var pinNums = pinRequest.Where(Char.IsDigit).ToArray().ToList();
pinNums是一个整数数组,有3个等于的部分 {1,4,8}
然后通过以下方式解决您的引脚挑战:
string part1 = fullWord.ToArray()[pinNums[0] - 1].ToString();
string part2 = fullWord.ToArray()[pinNums[1] - 1].ToString();
string part3 = fullWord.ToArray()[pinNums[2] - 1].ToString();
其中fullWord可能类似于123123或Password123
我不太确定此代码如何处理引脚挑战&gt; = 10位数。