测试用例在 Firefox 上失败但在 Chrome 上成功执行

Test cases failing on Firefox but successfully execute on Chrome

出于某种我无法理解的原因,我的测试用例在 Firefox 上失败但在 Chrome 上成功执行。

例如,这个简单的测试用例在 Chrome 上执行得很好,但在 Firefox 上会失败:

*** Settings ***
Documentation  This is some test sample login test
Library  Selenium2Library
Resource  ../Resources/common_resources.robot
Resource  ../Resources/users.robot

*** Test Cases ***
Test Robot Framework Logging
    [Documentation]  Some info about the valid login test step
    [Tags]  Login
    Open Browser  ${LOGIN URL}  ${BROWSER}
    Input Text  Username  ${VALID USER}
    Input Password  Password  ${VALID PASSWORD}
    Click Button  Log On
    Page Should Contain  Welcome
    [Teardown]  Close Browser

但是,如果我在按钮点击和断言之间放置一个 Sleep 10 关键字,它就会起作用。这让我认为出于某种原因,gecko webdriver 与此有​​关。

我是 运行 最新版本的 robotframework-selenium2library 和 webdriver。

据我了解,根本不鼓励在代码中包含 Sleeps。我该如何解决这个问题?我应该在哪里看?

非常感谢您的任何建议!

你说得对,你应该避免睡觉。等待明确的条件比等待一段固定的时间要好得多。如果你养成了经常调用 sleep 的习惯,你最终会导致你的 chrome 测试 运行 比必要的慢得多。

根据我的经验,在 firefox 上测试 运行 比 chrome 慢得多,因此您必须小心等待页面加载和元素可用。一个简单的解决方案可能是用合适的超时替换 page should contain with Wait until page contains

您还可以使用更高级的库,它具有一些内置的等待页面加载支持,例如 robotframework-pageobjectlibrary. This library makes it very easy to write your own keywords that have access to the full selenium API including its ability to wait on various conditions。页面对象库还提供 python 包装导致新页面加载的操作的上下文管理器。