Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Selenium WebDriver,从表中删除_Java_Html_Selenium_Selenium Webdriver - Fatal编程技术网

Java Selenium WebDriver,从表中删除

Java Selenium WebDriver,从表中删除,java,html,selenium,selenium-webdriver,Java,Html,Selenium,Selenium Webdriver,我一直在努力从表中删除一行。我真的不知道我做错了什么,我在非常相似的表格上做过非常相似的操作,没有问题 下面是HTML中的表格布局。第一个TR是头(需要忽略),之后每个TR等于一个条目,限制为4个条目 <table id="table" cellspacing="0" cellpadding="0" style=" border:0px black solid;WIDTH:100%;"> <tbody> <tr> <tr onclick="jsEvent

我一直在努力从表中删除一行。我真的不知道我做错了什么,我在非常相似的表格上做过非常相似的操作,没有问题

下面是HTML中的表格布局。第一个TR是头(需要忽略),之后每个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>
当这不起作用时,我也尝试了这种方法

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);
WebElement mainTable=driver.findElement(By.id(“table”);
List nameEntries=mainTable.findElements(By.xpath(“./*[@id='table']]/tbody/tr[2]”);
for(WebElement名称条目:名称条目){
namentry.click();
deleteName.click();
睡眠(100);
新操作(驱动程序).sendKeys(key.RETURN).perform();
睡眠(100);
在这两种情况下(以及我尝试过的其他50种情况),即使有4个表条目,程序也只是跳过try/catch,然后在尝试输入第5个条目时中断

任何援助都会非常好

谢谢大家,, 法雷尔


PS(另一方面,如果我希望通过中的“BIGNAME”属性进行选择,那么该如何进行选择?)

您是否尝试过将表数据放入ArrayList?可能您可以使用该ArrayList进一步使用,也可以删除不需要的列表元素。我对selenium也很陌生,如果我没有错的话,我认为selenium不允许您在web浏览器上操作表或html id。您可以发送键和但是删除行吗?不太确定。因此,除非提供了一种方法(允许您删除行),否则我认为您不能删除行。请让我知道这是否适用于您。

首先,您可以获得表中的所有行,如下所示:

List<WebElement> rows = we.findElements(By.xpath(".//tbody/tr"));
List<WebElement> cols = rows.get(rowID).findElements(By.xpath(".//td"));

没有答案吗(选择一行并单击deleteName按钮将删除该行。在web应用程序中,有一个人名列表,您可以选择一个,然后选择删除它们。这就是我试图模拟的操作。因此,表中该行旁边有复选框或选项按钮。如果是,则意味着一行有一个复选框。因此,它可能具有特殊性。)如果您使用xPath,请输入td值。作为一种激进的方法,我建议您使用xPath,尽管这是不可取的。下面是您应该做的…遍历“bigname”中的行td.for evry row增加计数。当您要删除特定行时,使用该计数查找特定于该行的特定复选框。因此,如果行中的复选框为td[1]、bigname td[2]、td[3]等,则选中特定行复选框将更容易。
List<WebElement> cols = rows.get(rowID).findElements(By.xpath(".//td"));
cols.get(index).getText().equals("BIGNAME")