Java Selenium div属性不断更改,如何找到此元素?

Java Selenium div属性不断更改,如何找到此元素?,java,html,selenium,Java,Html,Selenium,我试图用Selenium和Java查找一个元素,问题是元素的id、类和名称总是递增的,所以我无法用Selenium查找它。以下是我目前正在尝试的内容: WebElement field = driver.findElement(By.xpath("//input[contains(@linkText, 'Broadcast copy')]")); 在我的html文件中,以下是不断变化的属性: id="files[%2Fopt%240%2Frules%2F%2F000102%2.xml][%2F

我试图用Selenium和Java查找一个元素,问题是元素的id、类和名称总是递增的,所以我无法用Selenium查找它。以下是我目前正在尝试的内容:

WebElement field = driver.findElement(By.xpath("//input[contains(@linkText, 'Broadcast copy')]"));
在我的html文件中,以下是不断变化的属性:

id="files[%2Fopt%240%2Frules%2F%2F000102%2.xml][%2Fcluster%2Fname]"

name="files[%2Fopt%240%2Frules%2F%2F000102%2.xml][%2Fcluster%2Fname]" 

value="copy (Cluster 102)"
整个html

<tbody>
   <tr class='rowOdd'>
      <td><b>Name</b></td>
      <td> <input type='text' data-validation='required validate-name-unique validate-name-not-empty' size='65' id='files[%2Fopt%240%2Frules%2F%2F000102%2Fcluster.xml][%2Fcluster%2Fname]' name='files[%2Fopt%240%2Frules%2F%2F000102%2Fcluster.xml][%2Fcluster%2Fname]' value='copy (Cluster 102)' /> </td>

我认为您使用的xpath不正确。使用

//input[contains(text(), 'Broadcast copy')]
而不是

//input[contains(@linkText, 'Broadcast copy')]
根据您提供的html,以下内容也可以使用

//body[contains(.,'Name')]//input
试试这个

如果值属性中的“copy(Cluster”文本未更改,则可以尝试以下xpath:-

 //body[contains(.,'Name')]//input[contains(@value,'copy (Cluster')]

由于id、class和css的属性不断变化,“数据验证”一直保持不变,因此下面的代码对我来说很有用

driver.findElement(By.xpath("//input[@data-validation='required validate-name-unique validate-name-not-empty']"));

您可以为父节点提供
html
吗?元素是否在任何iframe中?不只是在常规div标记内的表中。这可能是因为它正在写入xml文件吗?如果是,我如何找到此元素?谢谢。在输入id中有一个“.xml”扩展。我的问题是,这可能是selenium找不到元素的原因吗?我从来没有处理过类似的事情。你是说嵌套在html中的xml吗?我想是的,id似乎就是html写入的文件。
driver.findElement(By.xpath("//input[@data-validation='required validate-name-unique validate-name-not-empty']"));