Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.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 如何识别表格中的单元格并单击它?_Java_Html_Selenium - Fatal编程技术网

Java 如何识别表格中的单元格并单击它?

Java 如何识别表格中的单元格并单击它?,java,html,selenium,Java,Html,Selenium,页面上有一个简单的表,第一个raw是列的标题,第二行/raw是动态更改的值 <div id = ...> <table ...> <tbody> <tr> ... <tr> <tr> <td class="x11 x22" nowrap> <a class="xl" href="search"> </a>

页面上有一个简单的表,第一个raw是列的标题,第二行/raw是动态更改的值

<div id = ...>
  <table ...>
    <tbody>
      <tr> ... <tr>
        <tr>
          <td class="x11 x22" nowrap>
             <a class="xl" href="search"> </a> </td>
          <td>...
          <td>...
      ....    

... 
...
...
....    
识别单元格的最佳方法是什么?单击第一列/第二行?
非常感谢

如果要单击第一个元素,则xpath将是:

(//a[@href='search'])[1]
(//a[@href='search'])[2]
第二个要素是:

(//a[@href='search'])[1]
(//a[@href='search'])[2]
等等

完整代码应该如下所示:

WebElement element = driver.findElement(By.xpath("(//a[@href='search'])[2]"));
element.click();

取决于标记的其余部分,但您可以使用//a[@href='search']的xpath。。。假设这是独一无二的。他们真的应该在标记中使用唯一的ID。href不是唯一的…好吧,假设类也不是唯一的,您需要dom遍历,这不是很理想。我会让工程师添加唯一的ID。可能有一种方法可以构建数组并单击元素[0,1]例如?是的,您可以使用我发布的与findElements相同的xpath。。。(如果页面是通过javascript生成的,则需要循环并在抛出过时元素异常时重新调用)假设DOM总是以相同的顺序返回链接,则可以为其选择索引。但仍然是一个非常脆弱的定位器。使用find.element…[2]。click()?@BobBolden更新了我的答案并添加了代码。请现在检查