gpt4 book ai didi

java - 如何处理具有相同 xpath 的多个对象的动态变化 xpath

转载 作者:行者123 更新时间:2023-12-02 04:32:52 24 4
gpt4 key购买 nike

我需要选择具有相同 xpath 的多个对象,只有 xpath 更改的最后几个值

我尝试为第一个添加包含,并且成功了。但我为第二个对象添加相同的代码,但它不起作用。我们可以用其他方法来做到这一点吗?

wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(".//[contains(@id,'listbox')]/li")))

这适用于第一个元素。第二个 xpath 在同一页面上也类似,只是最后 4 个字符不同。

两者的实际 XPath 均为 //*[@id="listbox1196"]/li

如果我对两个元素使用相同的代码,则第二个元素会失败。请提出建议。

最佳答案

您的问题之一位于 wait 。您要求“元素位于的可见性”。单数。但您给它一个列表。

当给定一个列表时,Selenium 将始终只查看第一条记录。因此,一旦第一个元素存在,代码就会继续,并且很可能导致至少一次中断。

因为您正在处理一个列表,所以我在评论中询问您是否提前知道应该存在多少个元素。有一种情况称为 numberOfElementsToBeMoreThan(By locator, int min) 。因此,第一步是等到 <li> 中的大多数,或者更好的是全部。已经出现了。

现在,由于它是一个列表,因此您需要遍历该列表。不要假设代码会自动判断您已完成第一条记录并准备好继续处理下一条记录。

wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(".//[contains(@id,'listbox')]/li")));
List<WebElement> things = driver.findElements(By.xpath(".//[contains(@id,'listbox')]/li");

things.get(0).click();
things.get(1).click();
things.get(2).click();

举个例子...

关于java - 如何处理具有相同 xpath 的多个对象的动态变化 xpath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56569577/

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