Robot Framework/Selenium无法识别XPath text()节点问题求助
优化解决方案
针对你遇到的问题,这里有几个更简洁高效的处理方式:
方案1:用JavaScript直接提取文本节点
Robot Framework的SeleniumLibrary里Get Text只认元素节点,没法直接用/text()这种XPath语法抓文本节点。换用Execute JavaScript直接操作DOM就能拿到目标纯文本:
${name}= Execute JavaScript return document.evaluate('//tr[1]/td[1]/text()[normalize-space()]', document, null, XPathResult.STRING_TYPE, null).stringValue.trim();
如果确定目标文本是<td>的第一个子节点,也可以用更直观的写法:
${name}= Execute JavaScript return document.querySelector('tr:nth-child(1) td:nth-child(1)').childNodes[0].textContent.trim();
方案2:用XPath字符串函数一步提取
要是<mat-icon>里的文本固定是file_download,直接用XPath的字符串操作就能拿到纯文本,不用额外替换:
${name}= Get Text xpath://tr[1]/td[1]/normalize-space(substring-after(., 'file_download'))
方案3:先定位文本节点再取内容
也可以先定位到目标文本节点元素,再通过JS获取它的内容:
${text_node}= Get WebElement xpath://tr[1]/td[1]/text()[normalize-space()] ${name}= Execute JavaScript return arguments[0].textContent.trim(); ${text_node}
这些方法都比你当前的替换方案更简洁,省去了多次元素定位和字符串替换的步骤。
内容的提问来源于stack exchange,提问作者Christian ReSa
相关产品推荐
相关产品推荐

