【发布时间】:2014-03-03 10:58:44
【问题描述】:
我一直在努力从表中删除一行。我真的无法弄清楚我做错了什么,我在非常相似的表上做了非常相似的操作并且没有遇到问题。
下面是 HTML 中的表格布局。第一个 TR 是 header(需要忽略),之后每个 TR 等于一个条目,并且限制为 4 个条目。
<table id="table" cellspacing="0" cellpadding="0" style=" border:0px black solid;WIDTH:100%;">
<tbody>
<tr>
<tr onclick="jsEvent('list item 1)">
<td class="attributes" style="font-size:12px ;font-family: sans-serif ;color: black ;background: #FFFFFF ">BIGNAME</td>
<td class="attributes" style="font-size:12px ;font-family: sans-serif ;color: black ;background: #FFFFFF "/>
<td class="attributes" style="font-size:12px ;font-family: sans-serif ;color: black ;background: #FFFFFF "/>
<td class="attributes" style="font-size:12px ;font-family: sans-serif ;color: black ;background: #FFFFFF "/>
<td class="attributes" style="font-size:12px ;font-family: sans-serif ;color: black ;background: #FFFFFF "/>
<td class="attributes" style="font-size:12px ;font-family: sans-serif ;color: black ;background: #FFFFFF "/>
<td class="attributes" style="font-size:12px ;font-family: sans-serif ;color: black ;background: #FFFFFF ">Y </td>
<td class="attributes" style="font-size:12px ;font-family: sans-serif ;color: black ;background: #FFFFFF ">2 </td>
<td class="attributes" style="font-size:12px ;font-family: sans-serif ;color: black ;background: #FFFFFF "/>
</tr>
<tr onclick="jsEvent('list item 2)">
<tr onclick="jsEvent('list item 3)">
<tr onclick="jsEvent('list item 4)">
</tbody>
</table>
显然这不是确切的代码,而是 HTML 的足够接近的副本,基本上我需要检测表是否为空,如果它不为空,我需要删除所有条目(但是第一个条目是标题)
这是我迄今为止尝试过的 Selenium
try{
Thread.sleep(500);
//System.out.println("STUFF");
WebElement deleteName = driver.findElement(By.xpath("html/body/table/tbody/tr[2]/td[2]/img"));
WebElement rowWithNameEntry = null;
//System.out.println("STUFF");
for(int i=2; i>6; i++){
WebElement nameEntry = driver.findElement(By.xpath(".//*[@id='table']/tbody/tr["+i+"]/td[1]"));
rowWithNameEntry = nameEntry.findElement(By.xpath("./.."));
System.out.println("stuff");
rowWithNameEntry.click();
deleteName.click();
Thread.sleep(100);
new Actions(driver).sendKeys(Keys.RETURN).perform();
Thread.sleep(100);
}
当这不起作用时,我也尝试了这种方法。
WebElement mainTable = driver.findElement(By.id("table"));
List<WebElement> nameEntries = mainTable.findElements(By.xpath(".//*[@id='table']/tbody/tr[2]"));
for (WebElement nameEntry : nameEntries) {
nameEntry.click();
deleteName.click();
Thread.sleep(100);
new Actions(driver).sendKeys(Keys.RETURN).perform();
Thread.sleep(100);
在这两种情况下(以及我尝试过的其他 50 种情况),即使有 4 个表条目,程序也会跳过 try/catch,然后在尝试输入第 5 个条目时中断。
任何帮助都会很棒,
谢谢大家, 法雷尔
PS(顺便说一句,如果我希望通过“BIGNAME”属性进行选择,该怎么做?)
【问题讨论】:
-
没有答案? :(
标签: java html selenium selenium-webdriver