Robot Framework查找不存在的文本

时间:2017-08-07 21:31:40

标签: python python-2.7 user-interface robotframework

我正在验证网页上的一些文字。有两段文字应该是互相排斥的,只有一篇文本可以在任何时候看到。

元素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>

我需要了解发生了什么以及如何解决它。

1 个答案:

答案 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