Java Selenium:如何将id或类与特定div关联?

Java Selenium:如何将id或类与特定div关联?,java,selenium,testing,highcharts,katalon-recorder,Java,Selenium,Testing,Highcharts,Katalon Recorder,我试着在询问之前搜索,但我没有找到(或理解)我的问题的正确答案 我正在测试一些图表(由Highcharts 6提供支持)。我在同一个url上有6个不同的图表。每一个都在一个div容器中,容器中有不同的元素(按钮等) 所有按钮的类别和/或ID都相同。 例如,这是图表1的最大化/最小化按钮: <a class="has-tooltip btn btn-default change" role="button" title="" id="table" data-original-title="T

我试着在询问之前搜索,但我没有找到(或理解)我的问题的正确答案

我正在测试一些图表(由Highcharts 6提供支持)。我在同一个url上有6个不同的图表。每一个都在一个
div
容器中,容器中有不同的元素(按钮等)

所有按钮的类别和/或ID都相同。
例如,这是图表1的最大化/最小化按钮:

<a class="has-tooltip btn btn-default change" role="button" title="" id="table" data-original-title="TEXT">
<span class="fa fa-lg ik-wi-icon-th"></span></a>
这个
[2]
是从哪里来的?

如何告诉Selenium我要单击哪个按钮?

这个
2
来自HTML中的第二个
//a[@id='table']/span

假设您有6个图形,它们都有一个与
id='table'
的链接,并且它们下面都有一个span,这意味着
//a[@id='table']/span
将返回6个元素。使用xpath,只有在确定图形的顺序不会改变时,才可以说单击第一个图形:

driver.findElement(By.xpath("//a[@id='table']/span")).click();
第二:

driver.findElement(By.xpath("(//a[@id='table']/span)[2]")).click();
第三:

driver.findElement(By.xpath("(//a[@id='table']/span)[3]")).click();
等等

当然,在你想测试的页面上点击chrome中的F12。然后转到控制台,并输入以下类型:

$x("//a[@id='table']/span")
它可能会返回6个元素。当您打开这些元素并将鼠标悬停在其上时,Chrome将高亮显示找到的元素。现在,如果您希望找到第五个元素Chrome,请在控制台中键入:

$x("(//a[@id='table']/span)[5]")

现在看看返回的元素是否是页面上的第五个元素。

我已经在您的问题中添加了
katalon studio
标记。可能有更熟悉卡塔隆工作室的人能更好地指导你。。HTML标记中使用的ID必须是唯一的,因为它们用于精确标识一个DOM元素。在这里,它们被标记为
。如果要标识多个DOM元素,请使用
。您好,谢谢您的快速回答!希望有人谁掌握了卡塔隆可以帮助我!关于类和ID,所有的按钮都在相同的HTML中,具有相同的类和ID,正如您在我发布的代码中所看到的,那么我如何区分它们呢?还是同一个问题…@GinoMempin是否有理由放弃标签
katalon studio
as OP的问题是基于katalon Recorder的?我遗漏了什么吗?@DebanjanB嗯……我不是故意删除你添加的标签,我肯定我只是编辑了内容。不过我确实收到了一条消息,其他人进行了编辑,我的编辑只有在内容更“充实”时才会被保存。我不确定,也许是因为我们的编辑不正确?无论如何,如果我的编辑删除了你的标签,我很抱歉。(不过我没有代表马上把它放回去。)非常感谢!!
$x("//a[@id='table']/span")
$x("(//a[@id='table']/span)[5]")