Robot Framework AppiumLibrary如何正确获取指定ID按钮的文本
问题原因及解决方案
错误点梳理
- xpath拼写错误:此前获取text属性时用了
//button[@id="button-Set"],大写的S和实际HTML定义的button-set不匹配,定位逻辑本身就有问题。 - 对web元素属性认知错误:在web/混合应用的web上下文下,HTML元素的可见文本不属于标准DOM属性,不能通过
GET ELEMENT ATTRIBUTE获取text、name属性拿到值。Appium Desktop中显示的text属性是原生层封装后的属性,和Web DOM属性不通用。 - xpath匹配逻辑错误:
contains(text(),'set')是大小写敏感的,小写的set无法匹配文本为大写Set的目标按钮,会误匹配到页面其他符合规则的按钮,所以才会返回id为button的结果。
正确实现方案
你可以直接使用AppiumLibrary提供的Get Text关键字获取元素文本,该关键字会自动适配原生/WEB上下文,同时也有现成的文本校验关键字可以直接满足你的需求:
# 混合应用场景需要先确保已切换到对应Web上下文,纯Web测试跳过该步骤 # 方式1:先获取元素再拿文本校验 ${target_btn}= GET WEBELEMENT xpath=//button[@id="button-set"] ${btn_text}= Get Text ${target_btn} Should Be Equal ${btn_text} Set # 方式2:直接用封装好的校验关键字,一步完成ID定位+文本校验,完全匹配你的测试需求 Element Text Should Be xpath=//button[@id="button-set"] Set
如果一定要通过属性方式获取文本,Web元素的文本对应DOM属性为textContent或innerText,示例如下:
${text_content}= GET ELEMENT ATTRIBUTE xpath=//button[@id="button-set"] textContent ${inner_text}= GET ELEMENT ATTRIBUTE xpath=//button[@id="button-set"] innerText
如果需要结合文本和ID同时定位,修正xpath的大小写即可:
PAGE SHOULD CONTAIN ELEMENT xpath=//button[@id="button-set" and text()="Set"]
内容的提问来源于stack exchange,提问作者Big Guy
相关产品推荐
相关产品推荐

