测试用例在 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 包装导致新页面加载的操作的上下文管理器。
出于某种我无法理解的原因,我的测试用例在 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 包装导致新页面加载的操作的上下文管理器。