1

出于某种我无法理解的原因,我的测试用例在 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在按钮单击和断言之间放置一个关键字,它就会起作用。这让我认为,出于某种原因,壁虎 webdriver 参与其中。

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

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

非常感谢您的任何建议!

4

1 回答 1

2

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

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

您还可以使用更高级的库,该库具有一些对等待页面加载的内置支持,例如robotsframework-pageobjectlibrary。这个库使编写您自己的关键字变得非常容易,这些关键字可以访问完整的 selenium API,包括它在各种条件下等待的能力。页面对象库还提供了包装导致新页面加载的操作的 Python 上下文管理器。

于 2017-03-14T20:34:50.147 回答