【问题标题】:How to locate elements of table with dynamic ids using findElements?如何使用 findElements 定位具有动态 id 的表格元素?
【发布时间】:2014-11-13 17:50:07
【问题描述】:

我必须为表的动态 ID 获取 XPATH。我正在尝试使用 findElements 将所有具有“sometext”的表 id 放入列表中。

问题是它们具有相似的模式,除了 id 属性中的数字不同

<tr>
<td>
<a id="text-132" </a>
</td>
<a id="text-125" </a>
</td>
<td>
<a id="test-122"</a>
</td>

我编写了以下代码,它没有显示任何定位 xpath 的错误,但它什么也不打印,列表大小为 0

List<WebElement> my_list = driver.findElements(By.xpath("//*[starts-with(@id, 'text')]"));
    System.out.println("Size: " + my_list.size());

    for (int i=0; i<my_list.size(); i++) {

        System.out.println(my_list.get(i).getText());

    }

【问题讨论】:

  • 以上工作正常。我只需要添加一个隐式等待驱动程序找到所有表 ID。添加此行解决了它。 driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

标签: selenium xpath webdriver


【解决方案1】:

我更喜欢(可能是习惯问题)-替代-CSS selectors:

选择器[attribute*=value]

示例a[href*="w3schools"]

说明:选择href属性值包含子字符串“w3schools”的每个元素

在你的投影中:

List<WebElement> myList=driver.findElements(By.cssSelector("a[id*=\"text\"]"));

System.out.println("Size: " + myList.size());

希望对你有所帮助。

【讨论】:

  • 感谢您的回复。我尝试同时使用 xpath 和 cssSelector 但没有任何效果。最后,我认为这是超时问题,所以我添加了它。
猜你喜欢
  • 2022-12-18
  • 2021-12-30
  • 2020-03-09
  • 2015-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-13
  • 1970-01-01
相关资源
最近更新 更多