【问题标题】:Robot Framework Click Button vs Submit Form机器人框架点击按钮与提交表单
【发布时间】:2018-08-09 06:30:19
【问题描述】:

我是 Robot Framework 的新手,并且坚持使用 SeleniumLibrary 进行非常简单的登录网页测试:

*** Test Cases ***
Valid Login
    Open Browser To Login Page
    Input Username    admin
    Input Password    test
    Submit Credentials
    Dashboard Page Should Be Open
    [Teardown]    Close Browser

大部分关键字与问题无关,除了

Submit Credentials
    Click Button    login-button
Dashboard Page Should Be Open
    Location Should Be    ${DASHBOARD URL}
    Title Should Be    Dashboard

如果我运行这个测试,它会失败,因为Location Should Be检查执行得太早了,而浏览器还在原来的登录页面上。我找到了两种可行的解决方案,但两者在概念上似乎都是错误的:

  1. 使用sleep

    Submit Credentials
    sleep ${DELAY}
    Dashboard Page Should Be Open
    

    在这种情况下,${DELAY} 应该相当大(例如 10 秒)以确保该页面确实已加载,否则它可能会失败。另外,我读过最好的做法是避免睡觉。而且我不能使用一些Wait Until Page Contains,因为我不知道登录页面是否会再次加载一些错误消息或仪表板页面加载成功。

  2. 使用Form Submit 代替Click Button

    Submit Credentials
        Submit Form  login-form
    

Form Submit 工作正常,但它与实际单击按钮不同,因为按钮可能有一些 onclick 处理程序会阻止提交表单。

使用 Wait Until Keyword Succeeds 在其他一些线程中的建议似乎没有帮助,因为 Click Button 立即成功。

【问题讨论】:

    标签: selenium-webdriver robotframework


    【解决方案1】:

    你绝对不应该使用sleep,因为它会引入人为的延迟,这可能会使你的整个套件变得比它需要的慢。我个人也认为Wait until keyword succeeds 几乎不应该被使用。当它重试时,它会在日志中乱扔消息。另外,我认为它掩盖了问题而不是解决问题。

    答案是使用wait 关键字之一。你说你不能使用Wait Until Page Contains""因为我不知道登录页面是否会再次加载一些错误消息或仪表板页面加载成功"。我不明白那个推理。

    您的应用程序应该是确定性的。也就是说,如果您输入正确的登录凭据,则应该保证它会进入仪表板页面,如果输入错误的条件,您应该会看到错误和/或被重定向回登录页面。

    测试的重点是验证这些条件。因此,对于验证您是否获得仪表板页面的测试,您应该在仪表板页面上找到一个元素,并在提交表单后等待它可见。如果它没有在适当的时间内出现,您的测试应该会抛出错误。

    我个人建议使用页面对象。例如,我编写的库 [1] 具有等待页面刷新的机制,以及用于验证您是否在您认为应该在的页面上的断言。不过你不需要使用我的库——代码的核心只有几百行代码,所以很容易编写你自己的。

    [1]https://github.com/boakley/robotframework-pageobjectlibrary

    【讨论】:

    • 好吧,我的意思是,如果登录表单无法正常工作,Wait Until Page Contains 将等待它永远不会收到的内容,但没有考虑到它会在超时时失败,这是我测试所需的失败。谢谢,我会用那个关键字。我会尝试查看您的库,尽管我对 Python 的了解大约为零,而且正如我所见,创建页面对象至少需要一些基本知识..
    猜你喜欢
    • 2012-11-04
    • 1970-01-01
    • 2017-04-26
    • 2016-01-11
    • 1970-01-01
    • 2022-10-16
    • 2015-03-25
    • 2017-11-12
    • 2012-11-08
    相关资源
    最近更新 更多