gpt4 book ai didi

java - 查找具有完全相同属性的元素

转载 作者:行者123 更新时间:2023-12-01 11:00:18 24 4
gpt4 key购买 nike

我正在使用 selenium webdriver 和 java 在 Eclipse 中创建一个测试。我有一个页面,我想在其中单击包含以下代码的按钮:

<button type="button" id="ext-gen1078" class="x-btn-text">Add</button>

问题是,代码中较早使用了完全相同的行(除了 id),因此当我使用以下代码行时,它将单击第一个项目,而我想单击更靠下的一个项目代码页。

driver.findElement(By.xpath("//button[@class='x-btn-text' and text()='Add']")).click();

我无法使用 ID,因为 ID 是自动生成的(很麻烦),因此没有唯一标识符。我尝试对第二个按钮使用完整的 Xpath,但这不起作用,只是太长了。

有没有办法确定这行代码(除了 ID 之外)出现了多少次,然后选择第二个甚至第三个(如果有两个以上)?

========================================

根据@drkthng提供的以下答案,我更新了问题。这是工作代码:

List<WebElement> listOfElements = driver.findElements(By.xpath("//*[@class=' x-btn-text' and text()='Add']"));
System.out.println("There are "+listOfElements.size()+" buttons with the text 'Add'");

if(listOfElements.size() >= 2) {
listOfElements.get(1).click();
}

这会导致单击正确的按钮并打印:有 2 个带有“添加”文本的按钮

最佳答案

如果您直接通过xpath搜索第二个按钮:

driver.findElement(By.xpath("//button[@class='x-btn-text' and text()='Add'][2]")).click();

或者既然你问了,你也可以通过元素列表来完成

Is there a way to determine how many times this exact line of code (exact except for the ID) is present

List<WebElement> listOfElements = driver.findElements(By.xpath("//button[@class='x-btn-text' and text()='Add']");

if(listOfElements.size() >= 2) {
listOfElements.get(1).click();
}

* 如果您使用 xpath 进行索引,则索引从 1 开始。在第二种方法中,索引从 0 开始!

关于java - 查找具有完全相同属性的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33394776/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com