如何使用具有2 X 2种结构的xpath选择元素?

时间:2018-11-13 17:26:08

标签: xpath

这是Confluence中精彩的HTML表的样子:

for (int i = 0; i < groupSong2.length; i++) {
   findViewById(groupSong2[i]).setVisibility(View.INVISIBLE)
}

我需要一个可以基于key1 + key2识别行的xpath。

这本身很容易,对吧?现在这是合流的复杂之处:

  

每行可以直接在td内部包含值,也可以包含一个   td>将包含值的span标签。

换句话说,每一行可以采用以下两种格式之一:

public class Test
{
   int val;

   public Test(int x)
   {
      val = x;
   }

   public void printVal()
   {
      System.out.println("The value is " + val);
   }
   public static void main(String [] args)
   {
      Test t1 = new Test(6);
      t1.printVal();
   }
}

OR

<tr>
  <td> key1
  </td>

  <td> key2
  </td>

  <td> value1
  </td>

  <td> value2
  </td>
</tr>

我现在在这里:

<td> text
</td>

这不起作用。它什么也没抓住。

PS:我完全没有花半天的时间来尝试获取不同的行!真正的问题不仅仅在于此,但我已经解决了下半部分。行选择无效。

2 个答案:

答案 0 :(得分:2)

尝试在XPath下方按两个单元格的值匹配

[ 62 157 208 303 306]

答案 1 :(得分:0)

我解决了这个!天哪,我不敢相信我花了几个小时就解决了。实际上,这是一个非常简单的解决方案! :)

//*[text() = 'key1']/ancestor::tr[descendant::*[text() = 'key2']]

这将根据逻辑表达式{(td = key1 OR td / span = key1)&&(td = key2 OR td / span = key2))选择行