【问题标题】:How to inspect if a element changed there text如何检查元素是否更改了文本
【发布时间】:2022-01-24 18:02:02
【问题描述】:

我们需要检查元素上的文本何时发生变化,因为这是查看过程是否结束的一种方式,所以我们做了这样的事情:

*** Settings ***
Library          Browser
*** Test Case ***
...
Then inspect if the element text is Finished
*** Keywords ***
Then inspect if the element text is Finished
sleep                                                      10
${text} =                                                  Get Text                                                      //*[@id="situacaoUltimaMovimentacaoVariacaoCambial"]
Should Be Equal                                            ${text}                                                      Finished

但我不认为为此使用 sleep 是一个好主意,你们知道一些更好的解决方案吗?

【问题讨论】:

    标签: robotframework playwright


    【解决方案1】:

    您可以使用下面提到的方法:

    例如元素的 xpath 最初--> //*[@id='anyid' and contains(text(), 'Started')] 最后--> //*[@id='anyid' and contains(text(), 'Finished')]

    *** Settings ***
    Library          Browser
    *** Test Case ***
    ...
    Then inspect if the element text is Finished
    *** Keywords ***
    Then inspect if the element text is Finished
    Wait Until Page Contains Element      //*[@id='anyid' and contains(text(), 'Finished')]    60s  
    

    关键字等待页面包含元素将等待 60 秒,直到具有 id - 'anyid' 和文本 - 'Finished' 的元素。如果文本未更改,则测试用例将失败。

    您也可以使用等到元素包含关键字

    Wait Unitl Element Contains    //*[@id='anyid']    Finished    60s
    
       
    

    【讨论】:

    • 您好 Roby,感谢您的建议,但在这种情况下,我们使用的是浏览器库而不是 SeleniumLibrary。我们使用 Playwright 是因为需要进行其他测试,并且我们试图将其保留为默认值,除非 Playwright 没有像“等到元素包含”这样的选项。
    • Playwright 会默认等待元素:playwright.dev/docs/navigations#wait-for-element 所以你可以使用这个方法等待 text=Finished await page.locator('text=Finished').waitFor();的元素
    • 感谢@senaid,你提醒我 Playwright 总是等待,我没有在机器人框架上使用等待,但这让我使用 Click 解决了问题。
    【解决方案2】:

    感谢@senaid,我找到了一个很好的解决方案。

    因为 Playwright 会一直等到尝试执行某些命令,所以我使用了单击带有文本的元素,该文本将在该过程完成后找到。所以代码将是:

    *** Settings ***
    Library          Browser
    *** Test Case ***
    ...
    Then inspect if the element text is Finished
    *** Keywords ***
    Then inspect if the element text is Finished
    Click                                                          //*[@id='situacaoUltimaMovimentacaoVariacaoCambial' and contains(text(),'Finished')]
    

    【讨论】:

      猜你喜欢
      • 2012-08-22
      • 2020-04-16
      • 1970-01-01
      • 1970-01-01
      • 2021-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-31
      相关资源
      最近更新 更多