【问题标题】:Why does my code skip a step on Robot Framework为什么我的代码在 Robot Framework 上跳过了一步
【发布时间】:2020-02-27 16:59:13
【问题描述】:

我正在尝试为我公司的网站进行自动化测试。代码通过了我的测试,但它跳过了一步。它应该首先从输入区域中删除文本,然后将新值添加到该同一位置

我已经尝试点击输入区,然后删除Delete Text Clear Element Text id=bankAccount.iban的文字,但是跳过了这部分

此代码来自机器人框架

*** Settings ***
Library           Selenium2Library

*** Variables ***
${Username}       myemailaddress@gmail.com
${Password}       12345678
${Browser}        Chrome
${SiteUrl}        http://our.siteaddress.fi/flfuserct-style/login
${DashboardTitle}    Our title was here
${ExpectedWarningMessage}    IBAN is invalid
${WarningMessage}    Adding a new bank failed!
${BankIban}       FI2112345600000788 (((this is not a real IBAN, so don't worry)))
${Delay1}         3s
${Delay2}         1s
${Delay3}         2s
${Delay4}         2s
${Delay5}         3s
${Delay6}         1s


*** Test Cases ***
Login Should Complete Without Errors, But Changing To A New Bank Should Fail Via Invalid IBAN
    Open Page
    Check Title
    Enter User Name
    Enter Password
    Click Login
    sleep    ${Delay1}
    Click My Info
    sleep    ${Delay2}
    Click Bank Account
    sleep    ${Delay3}
    Click Edit
    sleep    ${Delay4}
    Delete Text
    sleep    ${Delay5}
    Enter IBAN
    Assert Warning Message
    sleep    ${Delay6}
    [Teardown]    Close Browser


*** Keywords ***
Open Page
    open browser    ${SiteUrl}    ${Browser}
    Maximize Browser Window

Check Title
    Title Should be    ${DashboardTitle}

Enter User Name
    Input Text    css=[type="text"]    ${Username}

Enter Password
    Input Text    css=[type="password"]    ${Password}

Click Login
    Click Button    css=[type="submit"]

Click My Info
    Click Element    id=my-info

Click Bank Account
    Click Link    css=[href="/flfuserct-style/users/me/bank-accounts/primary"]

Click Edit
    Click Element    css=.MuiButton-label

Delete Text
    Clear Element Text    id=bankAccount.iban

Enter IBAN
    Input Text    id=bankAccount.iban    ${BankIban}

Assert Warning Message
    Element Text Should Be    id=bankAccount.iban-helper-text    ${ExpectedWarningMessage}    ${WarningMessage}

这个代码如果来自网站

<input aria-invalid="true" class="MuiInputBase-input MuiInput-input"
id="bankAccount.iban" name="bankAccount.iban" required="" type="text"
value="FI2112345600000788" aria-describedby="bankAccount.iban-helper-text">

来自机器人框架的代码 (https://imgur.com/RY7E5h6)

日志中的代码 (https://imgur.com/XESLljF)

如果您能看到这些图片(对不起,我是新来的),第一张来自 Robot Framework,显示了消息日志。如您所见,它通过了测试而没有错误,但它跳过了 Clear Element Text 部分。

日志中的第二张图片显示:清除定位器标识的文本输入元素的值。但这并没有发生。它只是在现有的 IBAN 之后写入 IBAN,它应该删除它。

另外,我似乎不能连续做 3 *,但设置、变量、测试用例和关键字都有 3 颗星

【问题讨论】:

  • 实际上并没有跳过关键字,日志显示已经执行了。
  • 是的,但实际上没有。它仍然没有做任何事情。你知道它为什么要这样做吗?
  • 在“关键字被执行”和“关键字没有做它应该做的事情”之间有一个明显的区别。由于我没有看到结果或 HTML 源代码,因此无法真正说出交易是什么。另外,尝试将Sleeps 替换为Wait Until Element 关键字以加快测试执行时间。
  • 结果和 HTML 源代码在我的问题中作为链接。同样,当我再次查看我的代码时,我注意到它确实跳过了那部分。我在它们之间有 2 个睡眠(等到元素可见对我不起作用)所以我可以清楚地看到它跳过了这一步。

标签: python selenium robotframework selenium2library


【解决方案1】:

对于Delete Text 关键字,我认为如果您使用类似的东西会更清楚一些

Input Text id=bankAccount.iban ${EMPTY}

这样,您实际上是在将文本字段字符串的值设置为空字符串,并且您确信它会起作用,因为相同的定位器和相同的方法(Input Text 关键字)肯定会在下一步工作,用于添加实际值(只是将这个值设置为空字符串,而不是添加值)

【讨论】:

  • 嘿,我已将 Clear Element Text id=bankAccount.iban 更改为您的建议,但它仍然与之前完全相同...有什么想法吗?
  • 嘿,我再次测试了这个,在我的其他代码上。似乎 ${EMPTY} 不会删除我的文本字段的值,但它没有添加任何 ' ' 。如果我错了,请纠正我
【解决方案2】:

Delete Text 包含以下代码:

Wait Until Element Is Visible    ${element}    timeout=${time}s
Set Focus to Element    ${element}
Click Element    ${element}
Clear Element Text    ${element}

【讨论】:

  • 嘿,我现在尝试使用您的代码。还是一样的结果。它会舔元素但不会删除它。它还毫无问题地为其添加了新价值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-19
相关资源
最近更新 更多