我正在创建一个自动化框架,我需要从元素中获取值并将其与我之前收集的值相匹配。现在,问题是,div值在页面加载后更新,所以即使在添加隐式等待/流畅等待/ Thread.sleep之后代码也不起作用。 但是当我调试代码时,代码无需进行任何更改即可正常工作。我不确定必须采取哪些措施。
由于我是新用户,我无法在此问题中添加图像,但最初的 “total:value”是“Total:0”并且填充需要一些时间才能更改,但由于页面已预先加载,因此超时无效。
请提出建议。
String sID = oIPops.getLocator("<value from properties file>");
/*
WebDriverWait wait = new WebDriverWait(driver,40);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(sID)));
*/
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String tValue = driver.findElement(By.id(sID)).getText();
System.out.println(""+tValue); // it will print Total : <populated value>
// Extracting the number from the string to match with data I have beforehand
char num = tValue.charAt(7);
String character = "+" + num;
Integer newNum = new Integer(character);
if (value == newNum)
{
logger.info("Sum of Situations on Cluster "+title+ " matches with the total value from situation table");
}
else
{
logger.error("Sum of Situations on Cluster "+title+ " does not match with the total value from situation table");
}
答案 0 :(得分:0)
这很容易。您所做的只是使用FluentWait类的.ignoring方法处理元素异常,然后重试(在有限循环内)重新找到元素并重试。如果不使用FluentWait可能会更容易,然后只需处理常规Java方式的异常。