RoboFramework Selenium遍历role=article元素获取子元素href和文本方案咨询
解决方案
你只需要在现有循环逻辑的基础上,基于当前遍历的article父元素,定位到内部的span元素后获取文本即可,调整后的完整代码如下:
${elements}= Get WebElements xpath://div[@role='article'] FOR ${element} IN @{elements} # 采集链接属性 ${link_elem}= Set Variable ${element.find_element_by_xpath(".//h2//a[contains(@class, 'C')]")} ${url}= Call Method ${link_elem} get_attribute href # 采集span文本,两种实现方式二选一即可 # 方式1:调用WebElement原生属性 ${span_elem}= Set Variable ${element.find_element_by_xpath(".//div[@class='X']/span[@class='Y']")} ${text}= Set Variable ${span_elem.text.strip()} # 方式2:使用SeleniumLibrary原生关键字,写法更符合RF规范 # ${text}= Get Text xpath:.//span[@class='Y'] parent=${element} # 输出拼接后的结果 Log To Console ${url} - ${text} END
注意事项
- 定位子元素的XPath开头必须加
.,代表仅在当前遍历的article元素范围内查找,避免全局匹配到其他article下的元素 strip()方法用于清洗掉HTML中span标签内容前后的换行、空格,拿到纯净的文本内容- 原定位逻辑中的
contains(@role, 'article')可以替换为@role='article',精确匹配属性值可避免误匹配其他包含article字段的role属性
内容的提问来源于stack exchange,提问作者user3925023
相关产品推荐
相关产品推荐

