【发布时间】:2018-02-06 18:43:26
【问题描述】:
请参考以下代码,此代码将从 findtable 方法中获取所有 orderID 并将所有 orderID 传递给 clickonIndividualOrderID 方法 所以光标移动到每个orderid并点击它,会出现一个新页面,它会获取状态并点击完成,如果我们尝试选择下一个orderID,它会返回旧页面,它会抛出异常
您能否建议一些解决此问题的方法 提前致谢
List<WebElement> orderID = new ArrayList<WebElement>();
List<WebElement> statusID = new ArrayList<WebElement>();
public void OrderandReleases()
{
orderID = outboxpage.findtable(orderID);
util.pause("1");
statusID = outboxpage.findordernumber(statusID, orderID);
}
public List<WebElement> findOrderID(List<WebElement> orderID) {
WebElement table = driver.findElement(By.id("_kod7c3"));
List<WebElement> allRows = table.findElements(By.tagName("tr"));
//And iterate over them, getting the cells
for (int i = 1; i < allRows.size(); i++) {
List<WebElement> alltd = allRows.get(i).findElements(By.tagName("td"));
for (int j = 0; j < alltd.size(); j++) {
if (j == 1) {
orderID.add(alltd.get(j));
continue;
}
}
}
return orderID;
}
public List<WebElement> clickonIndividualOrderID(List<WebElement>
statusID,List<WebElement> orderID){
for (int i = 0; i < orderID.size(); i++) {
WebElement table = driver.findElement(By.id("_kod7c3"));
if (table.isDisplayed()) {
System.out.println("Clicking on
order="+orderID.get(i).getText()); -> //first time it will run fine , second time when it loops back it will thow the execption StaleElementReferenceException here
orderID.get(i).click(); -> //it is clicking on a order link and it will take me to next page
driver.findElement(By.id("_jxndro")).click();
WebElement table2 = driver.findElement(By.xpath("//*
[@id=\"_mfb\"]"));
List<WebElement> allRows2 =
table2.findElements(By.tagName("tr"));
String col = "";
for (int j = 1; j < allRows2.size(); j++) {
List<WebElement> alltd2 =
allRows2.get(j).findElements(By.tagName("td"));
int flag = 0;
for (int k = 0; k < alltd2.size(); k++) {
col = alltd2.get(k).getText().toString().trim();
System.out.println(col);
if (col.equals("Failed")||col.contains("FE-")) {
statusID.add(alltd2.get(++k));
driver.findElement(By.id("_uvsub")).click(); --> // it will take me back to the first page
flag =1;
break;
}
}
if(flag==1)
break;
}
}
}
return statusID;
}
【问题讨论】:
-
帮助我们! 缩写您的代码以仅显示相关部分,进一步描述页面(如果可能,添加其代码,或附上其 URL),通常只需给出我们的工具可以提供帮助!
-
codeSystem.out.println("点击订单="+orderID.get(i).getText()); //第一次它会运行良好,第二次当它循环回来时,它将在这里执行 StaleElementReferenceExceptioncodeorderID.get(i).click(); //它正在点击一个订单链接,它会带我到下一页 -
更多代码:
codedriver.findElement(By.id("_jxndro")).click();codeWebElement table2 = driver.findElement(By.xpath("//* [@id=\"_mfb\"]"));codeListallRows2 = table2.findElements(By.tagName("tr"));如果您需要更多信息,请告诉我,提前谢谢
标签: java selenium page-factory staleelementreferenceexception