【问题标题】:Wait until Page Contains Element works but not Element Should Contain等到页面包含元素有效,但元素不应该包含
【发布时间】:2019-08-05 00:18:58
【问题描述】:

试图验证一个元素是否包含特定文本,但关键字Element Should Contain 找不到该文本,即使我明确输入了包含该文本的 xpath 属性。但是关键字Wait Until Page Contains Element 有效。

运行下面的脚本,得到以下结果

#this was successful
Wait until Page Contains Element  xpath://div[@id="header"]//span[contains(text(), "text")]  

#this resulted to: should have contained text 'text' but its text was ''
Element Should Contain  xpath://div[@id="header"]//span[contains(text(), "text")]  text  

【问题讨论】:

  • 该元素是否恰好包含四个字符“文本”,还是包含更多信息?
  • 该元素确实包含更多字符,例如“这是一个文本”。但这应该没关系吧?因为Element Should Contain,根据我的理解,只验证元素是否包含文本,而不是验证它是否正是文本。
  • @E.A.S.P.根据 SeleniumLibrary 文档:“如果要匹配确切的文本,而不是子字符串,请使用'元素文本应该是'。”,你是对的。

标签: robotframework selenium2library


【解决方案1】:

Element Should ContainWait until Page Contains Element 之间存在差异。

第一个将仅检查 DOM 是否包含带有该文本子字符串的元素,而最后一个将等待(默认情况下)最多 5 秒以使该元素出现在 DOM 中以验证是否它存在。或者,换种说法:第一个检查条件是否正确,另一个监听 DOM 中的变化以检测所需的值。也许您的文字会在加载一段时间后显示?

来自the documentation

Element Should Contain:

验证元素定位器是否包含预期的文本。 ... 如果要匹配确切的文本,而不是子字符串,请使用 Element Text Should Be。

Wait Until Page Contains Element:

等到元素定位器出现在当前页面上。如果在元素出现之前超时过期,则失败。

【讨论】:

  • 嗨,你是对的。我实际上是在尝试验证执行鼠标悬停后出现的工具提示中的文本。所以我所做的是执行Mouse OverWait Until Page Contains Element,然后是Element Should Contain
【解决方案2】:

能够解决这个问题。该脚本实际上是正确的,唯一的问题是每当我执行“鼠标悬停”时也会出现类似的 xpath(我这样做是因为我试图验证工具提示)。因此,结果是它返回了 2 个元素,除非区分,否则机器人框架无法验证。

感谢大家的意见。

【讨论】:

    【解决方案3】:

    当尝试检查文本是否正确时,您可以执行以下操作:

    Run Keyword And Continue On Failure    Element Text Should Be   XPATH    TEXT
    

    如果您希望在文本不正确的情况下停止测试,您也可以将第一部分留在后面。

    Element Text Should Be   XPATH    TEXT
    

    【讨论】:

      猜你喜欢
      • 2019-12-09
      • 2014-05-02
      • 2019-04-24
      • 2017-01-08
      • 1970-01-01
      • 2011-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多