Java 访问id未知但路径已知的元素

Java 访问id未知但路径已知的元素,java,selenium,xpath,Java,Selenium,Xpath,我正在编写一个测试程序,该程序只需要很少的信息。在这种情况下,我的程序在运行之前不知道页面中元素的ID,因为页面上的Javascript在运行时动态地分配这些元素。我所拥有的唯一常量是我正在寻找的结构和文本。我包括一个正在生成的DOM示例的屏幕截图。在本例中,我知道我想要访问文本为apply的按钮,该按钮显示在文本为“to Location:”的标签旁边,有没有一种方法可以使用xpath操纵它们的关系并确保我访问的是正确的元素。我不能只访问应用按钮,因为页面上有6个应用按钮,具有动态生成的ID。

我正在编写一个测试程序,该程序只需要很少的信息。在这种情况下,我的程序在运行之前不知道页面中元素的ID,因为页面上的Javascript在运行时动态地分配这些元素。我所拥有的唯一常量是我正在寻找的结构和文本。我包括一个正在生成的DOM示例的屏幕截图。在本例中,我知道我想要访问文本为apply的按钮,该按钮显示在文本为“to Location:”的标签旁边,有没有一种方法可以使用xpath操纵它们的关系并确保我访问的是正确的元素。我不能只访问应用按钮,因为页面上有6个应用按钮,具有动态生成的ID。它们旁边的标签是不同的,所以我尝试使用它并从那里操纵路径。帮忙

这是可能的。如果您提供完整的html代码,我可以提供更好的xpath。但对于您粘贴的内容,这里有一个简单的方法可能有效:


//td[div//label[text()=“To Location:”]]/following兄弟姐妹::td[1]//按钮[text()=“Apply']

有一种稍微长一点的迂回方式,但它是按类生成元素列表,然后单击文本正确的元素

`var elements  = driver.FindElements(By.Class("text-pb"));
foreach(var element in elements) 
{
  if(element.Text.Equals("Searched Text"))
{
 element.click();
}
}`
如果你想按一下按钮,那可能行得通。
我在网站生成的页面上使用了这类东西,所以它应该做你想做的事情

您可以使用
driver.findElements(…)
并选择第一个按钮(或任何应该的按钮)。您还可以编写一组代码,一步一步地进入dom?找到了吗?听起来很像XPath。请不要在图像中添加代码。而是以文本的形式发布一个完整的、最小的HTML文档示例,以及所有相关的Java/Selenium代码。在编写时,还应该显示代码的预期输出。谢谢更多帮助:。您可以共享您的html代码吗?