我需要获取以“ 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到数组中。在连字符后,通常会有大写,小写和数字的某种组合-这取决于下拉菜单...
据我所知,您正在尝试获取以'starx-'文本开头的ID。您已经创建了一个Webelements(List<WebElement>
)列表,并且在提取文本时,通过不提取id的属性来循环它,这就是问题所在。
您可以按如下所述处理它: