我在页面中有大约50行。但这些项目是按顺序进行的。
问题是有人输入并删除了该表行。那个id不会出现在页面中..
示例:
popup:org.eclipse.ui.popup.any?after=additions
如果用户删除了第二条记录,那么页面上会有两条记录,但ID为101,103。
我试着写一下,如果那个id存在,那么得到文本,然后在for循环中留下。我只获取记录,直到找到该ID未找到显示User added 1st record: id 101 added.
User added 2nd record: id 102 added
User added 3rd record: id 103 added.
。
请更正代码。但我想解决的问题是,如果该ID不存在,请跳过并运行else部分。
NoSuchElementException
我得到的例外:
线程中的异常" main" org.openqa.selenium.NoSuchElementException:无法找到带有xpath == // * [@ id =' 7593'] / a的元素(警告:服务器未提供任何堆栈跟踪信息) 命令持续时间或超时:503毫秒
答案 0 :(得分:0)
尝试使用此方法isPresent而不是isDisplayed。
public boolean isPresent(WebElement e) {
boolean flag = true;
try {
e.isDisplayed();
flag = true;
}
catch (Exception e) {
flag = false;
}
return flag;
}
答案 1 :(得分:0)
How about this:
for (int i = counterstart; i <= counterend; i++) {
WebElement element;
try{
element = driver.findElement(By.xpath("//*[@id='" + i + "']/a"));
}catch(NoSuchElementException n)
{
element = null;
}
if(element !=null){
System.out.println(i+" is present");
String Projects = driver.findElement(By.xpath("//*[@id='" + i + "']/a")).getText();
System.out.println(Projects);
}else{
System.out.println(i+" is NOT present");
}
}
答案 2 :(得分:0)
查找要从中获取文本的所有元素的所有父元素,并使用它向下钻取,这样就不会出现异常
假设html看起来像这样
Edit
你可以这样做
<div id="parent">
<div id="11">
<a>text</a>
</div>
<div id="12">
<a>text</a>
</div>
<div id="13">
<a>text</a>
</div>
</div>