我在使点击动作自动化方面遇到了挑战,我正在努力了解解决方案中的逻辑出了什么问题。
我的挑战是,我需要单击许多不同的单选按钮之一。
每个单选按钮的ID为“ r” + a_number。
对于任何给定的测试,我都不知道可用的“ r” + a_number选项是什么,所以我编写了这个while循环,旨在单击第一个可用的单选按钮:
int counter = 0;
while(true) {
counter++;
try {
driver.findElement(By.id("r" + counter)).click();
} catch (NoSuchElementException e) {
continue;
}
break;
}
这没有按预期方式工作-有人可以帮助我了解问题所在吗?
注意:我是Java的新手
更新
[我的目标是单击第一个现有的单选按钮,因此while循环会递增计数器var,假设r = 1,然后尝试单击ID为“ r1”的单选按钮。如果没有ID为“ r1”的元素,则将引发NoSuchElementException,在这种情况下,当前的while循环迭代应停止并开始下一次迭代(r = 2,如果不存在,请尝试单击元素“ r2”,从下一个循环开始。)>
假设我们到达元素“ r20”,而该元素实际上确实存在,则应单击按钮,不引发异常,因此while循环继续并按下break命令,而while循环终止。 >
但是,当前的行为是即使该元素不存在,该异常也不会得到处理,while循环终止,但是没有单击任何内容。`
我在使点击动作自动化方面遇到了挑战,我正努力了解解决方案中的逻辑出了什么问题。我的挑战是我需要单击许多不同的收音机中的一个...
不确定,可能需要更多信息,但是我会有所不同
int counter = 0;
boolean ifNotFound = true;
while(ifNotFound) {
counter++;
try {
driver.findElement(By.id("r" + counter)).click();
ifNotFound = false;
} catch (NoSuchElementException e) {
System.out.println("exception caught");
}
}
请使用此:
int counter = 0;
while(true) {
counter++;
boolean elementFound = false;
try {
driver.findElement(By.id("r" + counter)).click();
elementFound = true;
} catch (NoSuchElementException e) {
continue;
}
if (elementFound){
break;
}
}
代码有两个问题:
循环仅运行一次-在第一次迭代之后,您正在使用break
语句中断循环。
在上面的代码中,您尝试将字符串附加为int值,但是在python中,您不能像java那样做。如果要在字符串后附加int值,则应使用str()并传递int值例如:int counter = 0;
while(true) {
counter++;
try {
driver.findElement(By.id("r" + str(counter))).click();
} catch (NoSuchElementException e) {
continue;
}
break;