使用Robot Framework验证shadow root文本节点报is_displayed错误如何解决
解决方案
错误原因
你在DOM定位表达式末尾追加了.innerText,该表达式返回的是字符串类型的文本值,而非DOM元素对象。Wait Until Element Is Visible关键字要求入参为可识别的元素定位符,传入字符串自然会抛出*'str' object has no attribute 'is_displayed'*的报错。
正确实现方式
方式1:使用原生DOM定位(兼容所有支持dom定位的版本)
先移除定位表达式里的.innerText,可分两步完成校验:
- 先校验元素可见
Wait Until Element Is Visible dom:document.getElementById("react-root").shadowRoot.querySelector('div[class*="styles__RadiusUnitLabel"]')
- 再校验元素文本符合预期
Element Text Should Be dom:document.getElementById("react-root").shadowRoot.querySelector('div[class*="styles__RadiusUnitLabel"]') 20 Meters
方式2:使用::shadow语法(SeleniumLibrary 4.0+版本支持,写法更简洁)
SeleniumLibrary 4.0及以上版本内置了shadow root定位语法::shadow,不需要编写冗长的JS表达式:
# 一步完成元素可见+文本校验 Element Text Should Be css:#react-root::shadow div[class*="styles__RadiusUnitLabel"] 20 Meters
内容的提问来源于stack exchange,提问作者Kunio
相关产品推荐
相关产品推荐

