如何获取同class的a元素下strong标签多文本?可基于label文本筛选
基于Label文本筛选获取对应Strong标签文本
目标HTML结构
<a id="id_1008326" class="activity"> <strong>heizil</strong> : <label id="check_label"> " First Device Test" </label> <a id="id_10808296" class="activity"> <strong>riya</strong>: <label id="check_label"> " Second Device Test" </label>
当前问题
原代码仅能获取第一个strong标签文本:
System.out.println(driver.findElement(By.xpath("//a[@class='activity']/strong")).getText());
输出仅为heizil,无法获取所有符合条件的文本(如riya)。需求是基于label标签的文本内容(如“First Device Test”/“Second Device Test”)作为筛选条件,获取所有对应strong标签文本,预期输出heizil,riya。
解决方案
使用findElements批量定位符合条件的元素,结合XPath通过label文本筛选对应a节点下的strong标签:
代码示例(Java)
// 定位所有包含指定label文本的a元素下的strong标签 List<WebElement> strongElements = driver.findElements(By.xpath( "//a[@class='activity'][.//label[@id='check_label' and contains(text(), 'Device Test')]]/strong" )); // 收集所有文本并拼接成预期格式 List<String> nameList = new ArrayList<>(); for (WebElement elem : strongElements) { nameList.add(elem.getText().trim()); } String result = String.join(",", nameList); System.out.println(result); // 输出:heizil,riya
说明
contains(text(), 'Device Test')用于匹配包含指定关键词的label文本,若需要精确匹配,可替换为text()=' " First Device Test"'(注意保留文本中的空格和引号)findElements会返回所有符合条件的元素,而非仅第一个- 最后通过
String.join将收集到的文本拼接成逗号分隔的格式
内容的提问来源于stack exchange,提问作者nayansFosgit
相关产品推荐
相关产品推荐

