下面是我尝试自动化的场景: 将链接的所有数值放入 Selenium Weblist 中并执行加法,然后验证计数总和是否与固定数字匹配。
问题是数字链接返回一个用大括号括起来的数字示例:(20)(35)(16)(15)
我需要首先修剪这些括号并仅获取数字,然后执行加法,即:20+35+16+15
稍后我需要根据数字断言总数,即:Assert.assertequals(sum,'86')
List<WebElement> lists=driver.findElements(By.cssSelector("span.ndocs"));
for (int i=0; i<lists.size(); ){
String trimmed_value=lists.get(i).getText();
trimmed_value=lists.get(i).getText().trim().substring(trimmed_value.indexOf("(") + 1);
trimmed_value=lists.get(i).getText().trim().substring(0, trimmed_value.indexOf(")"));
System.out.println(trimmed_value);
int numerical_value = Integer.parseInt(trimmed_value);
i++;
}
到目前为止,我能够获取元素,迭代它们并能够删除大括号并获取数字,我坚持如何执行加法操作然后对计数进行断言。 任何帮助将不胜感激。
最佳答案
尝试使用下面的代码。
在方法外部初始化一个变量,并向其中添加每个 trimmed_value,如下所述。
导入assertEquals(导入静态org.junit.Assert.assertEquals;)
int expected_value=86;
int numerical_value=0;
List<WebElement> lists = driver.findElements(By.cssSelector("span.ndocs"));
for (int i = 0; i < lists.size(); ) {
String trimmed_value = lists.get(i).getText();
trimmed_value = lists.get(i).getText().trim().substring(trimmed_value.indexOf("(") + 1);
trimmed_value = lists.get(i).getText().trim().substring(0, trimmed_value.indexOf(")"));
System.out.println(trimmed_value);
numerical_value =numerical_value+Integer.parseInt(trimmed_value);
i++;
}
assertEquals(expected_value, numerical_value);
关于java - for 循环外部变量的动态添加和使用 - Selenium,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42717756/