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

时间:2017-03-14 17:36:06

标签: robotframework selenium2library

由于某些我无法理解的原因,我的测试用例在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。我该如何解决这个问题?我应该在哪里看?

非常感谢您提供任何建议!

1 个答案:

答案 0 :(得分:2)

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

根据我的经验,测试在firefox上的运行速度要慢于chrome,所以你必须小心等待页面加载和元素可用。一个简单的解决方案可能是用page should contain替换Wait until page contains并使用合适的超时。

您还可以使用更高级的库,该库具有一些内置支持,可以等待加载页面,例如robotframework-pageobjectlibrary。该库使您可以轻松编写自己的关键字,这些关键字可以访问完整的selenium API,包括wait on various conditions的功能。页面对象库还提供了python上下文管理器,它们包含导致新页面加载的操作。