试图将具有常用短语的ID列表放入Selenium Java中的数组/列表中

问题描述 投票:0回答:1

我需要获取以“ starx-”开头的DOM中存在的ID到数组中。在连字符后,通常会有大写,小写和数字的某种组合-这取决于先前选择的下拉菜单。但是starx-对于所有id都是通用的,无论在上一个下拉列表中选择了什么(并且有很多选项,所以...根据上一个下拉列表创建一堆“ if”语句不是)

为此,我在此处创建了此行,以匹配DOM中以starx-开头的所有ID:

List<WebElement> allStarX = driver.findElements(By.cssSelector("[id^='starx-']"));

所以很容易找到它们。我在其中输入的一些打印语句表明,如果DOM中有4个这样的ID,它将找到所有ID。如果有7,则该列表中将有7个元素。不幸的是,该列表不包含实际的ID。它包含:

[[ChromeDriver:WIN8_1上的Chrome(f665490daee44e1039265763f67008cc)]-> css选择器:[id ^ ='starx-']]] >>

对于每个以starx-开头的id,它存在于DOM中。理想情况下,我会使用.getAttribute方法获取所有ID,但这是针对字符串的。例如,如果我将其添加到此末尾:

List<WebElement> allStarX = driver.findElements(By.cssSelector("[id^='starx-']")).getAttribute();

我的类型不匹配。如果我这样做:

for (WebElement starx : allStarX)
{
    starx.getAttribute("id");
    System.out.println(starx);

}

它仍然打印出很多:

[[ChromeDriver:WIN8_1上的Chrome(f665490daee44e1039265763f67008cc)]-> css选择器:[id ^ ='starx-']]

] >>

我有点知道为什么最后一个不起作用,但是我不明白为什么第一个不起作用。谁能提出一些可能有用的建议?

谢谢!

PS-绝对xpath似乎不起作用,因为以前有很多选项可以在DOM中添加和删除内容。

我需要获取以“ starx-”开头的DOM中存在的ID到数组中。在连字符后,通常会有大写,小写和数字的某种组合-这取决于下拉菜单...

java list selenium css-selectors id
1个回答
0
投票

据我所知,您正在尝试获取以'starx-'文本开头的ID。您已经创建了一个Webelements(List<WebElement>)列表,并且在提取文本时,通过不提取id的属性来循环它,这就是问题所在。

您可以按如下所述处理它:

© www.soinside.com 2019 - 2024. All rights reserved.