【问题标题】:RobotFrameWork: How to check an dynamic element in the top row of a component blockRobotFrameWork:如何检查组件块顶行中的动态元素
【发布时间】:2019-02-16 00:11:35
【问题描述】:

所以有一个网站: https://www.investing.com/equities/pre-market

并且网站有一个带有 ID 的块:称为 components_block

那个块有行...

如何检查“Chg.%”列中的元素是否在值/数字前面有一个 + 号。

我发现它是第 2 次 TR,然后是第 6 类....

那我该怎么做呢?

我试过这个:

Should Match Regexp  bold pidExt-23176-pcp greenFont  ^[+]

(不过我不喜欢那个解决方案,因为类名可以改变)

顺便说一句,测试结果说:不匹配 而当我在https://pythex.org/ 测试正则表达式时,它工作得很好。

那么什么不匹配?是找不到类,还是正则表达式的结果不对?

我发现了一些接近(r)的东西?: http://seleniummaster.com/sitecontent/index.php/selenium-robot-framework-menu/selenium-robot-framework-python-menu/204-selenium-robot-framework-table-verification

Table Cell Should Contain    xpath=//div[@id='components_block']/table    1 1

【问题讨论】:

  • 这不行 - 请 a) 添加你感兴趣的元素的 html,并且主要是 b) 显示你的一些努力 - 你尝试了什么,你在哪里遇到问题. SO 社区很乐意提供帮助,但几乎不会代替您做任何事情。如有疑问,请在此处查看 - How to Ask

标签: robotframework


【解决方案1】:

Should Match Regexp 通过检查字符串是否匹配给定的正则表达式来工作 - 您必须首先获取元素的文本,然后使用此关键字:

${the text}=    Get Text    your_locator
Should Match Regexp    ${the text}    ^[+]

正则表达式方法相当不错;您还可以使用 BuiltIn 库中的关键字,在这种情况下将验证相同:

Should Start With    ${the text}    +

【讨论】:

    【解决方案2】:

    这是我为您提供的解决方案。我下面的解决方案会将所有“+”输出存储到一个列表中。完整的步骤是:

    1.找到第 6 列 (Chg.%) 的 xpath 定位器。然后,找出它们有多少行。我检查时发现了 10 行。请参阅下面的代码。注意我是如何使用这个关键字的:GET ELEMENT COUNT

    ${xpath}=   Set Variable /html[1]/body[1]/div[5]/section[1]/div[6]/table[1]/tbody[1]/tr//td[6]
    ${rows_found}=  Get Element Count   xpath=${xpath}
    

    2.使用关键字创建一个空列表:CREATE LIST

    ${res_list}=    Create List
    

    2. 使用 FOR-IN RANGE 循环遍历这 10 行,如果结果包含“+”文本/字符,则仅将结果存储到列表中。当我使用 GET TEXT 关键字时,我会在每次迭代期间在 xpath 中传递 tr[${row}]。请注意我如何使用这些关键字:RUN KEYWORD AND RETURN STATUSSHOULD START WITHAPPEND TO LIST

    : FOR ${row} IN RANGE 1  ${rows_found}+1
         ${row_text}=   Get Text    xpath=/html[1]/body[1]/div[5]/section[1]/div[6]/table[1]/tbody[1]/tr[${row}]/td[6]
         ${text_contains_plus}= Run Keyword and Return Status   Should Start With   ${row_text} +
         Run Keyword If  '${text_contains_plus}' == 'True'  Append To List  ${res_list} ${row_text}
    
    Log To Console  ${res_list}
    Log ${res_list}
    

    但是,如果您需要存储两 (2) 个变量,即第 6 列中带有“+”的公司名称及其文本值(例如:+20.11),那么您需要在我的脚本中再添加几行上面,但最优雅的方法是使用 ROBOT Framework 中的 DICTIONARY 关键字。参考这个链接:http://robotframework.org/robotframework/latest/libraries/Collections.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-30
      • 2019-12-18
      • 2013-09-28
      • 2021-12-10
      • 1970-01-01
      • 1970-01-01
      • 2019-02-22
      • 2020-06-14
      相关资源
      最近更新 更多