我正在验证网页上的一些文字。有两段文字应该是互相排斥的,只有一篇文本可以在任何时候看到。
元素xpath = // * [@ id =" study_info"]实际上检索文本"没有可用的记录"或"显示x"的第x页;根据记录,页面上只显示其中一个文本。如果没有记录,则显示"没有记录可用"否则它显示"显示x"的页面x
当我试图在Robot Framework中验证这些时,它实际上一次找到两个文本,虽然我只能看到一个文本。我不知道这里发生了什么..下面的代码应该失败,因为文本是互斥的,只有一个文本是可见的。但它没有任何问题。
Page Should Contain No records available
Page Should Contain Showing page
Page Should Contain Element xpath=//*[@id="study_info"]
元素的完整代码是
"<div class="dataTables_info" id="study_info" role="status" aria-live="polite">No records available</div>
我需要了解发生了什么以及如何解决它。
答案 0 :(得分:0)
根据所使用的可视化(js)框架,当前不可见的文本很可能在HTML中 - div
将其隐藏,放入一堆可能的值等。 ,并根据需要替换可见元素。
关键字Page Should Contain
遍历整个当前的html - 它实际上使用了一个定位器xpath=//*[contains(., %s)]
,其中%s
是您所追求的字符串,如果有的话(隐藏/重叠/ js source)元素有文本,将返回true。
为了解决你的具体情况,我建议采用一些不同的方法 - 获取该元素的文本值,并断言它是预期的一个:
${locator}= Set Variable xpath=//*[@id="study_info"]
${current text}= Get Text ${locator}
Should Contain ${current text} Showing page
Should Not Contain ${current text} No records available # and vice-versa