robotframework 与等待相关的点
Robot framework 引入 Selenium2Library 类库:
在用robotframework-selenium2library做web自动化测试时候,首先要将Selenium2Library导入到Test Suite中,在导入Selenium2Library时可以指定以下可选参数:
timeout=5.0
implicit_wait=0.0
run_on_failure=Capture Page Screenshot
screenshot_root_directory=None
导入Selenium2Library库时,设置timeout参数值为0。
*** Settings ***
Library Selenium2Library timeout=0
*** Test Cases ***
login
Open Browser http://www.126.com
Input Text id=idInput emailfortest2016
Input Password id=pwdInput 111112
Click Element id=loginBtn
Wait Until Element Is Visible link=退出
Click Element link=退出
Close Browser
在测试用例中通过关键字Set SeleniumTimeout设置参数值为0。
*** Settings ***
Library Selenium2Library
*** Test Cases ***
login
Open Browser http://www.126.com
Input Text id=idInput emailfortest2016
Input Password id=pwdInput 111112
Click Element id=loginBtn
Set Selenium Timeout 0
Wait Until Element Is Visible link=退出
Click Element link=退出
Close Browser
在使用Wait Until Element IsVisible关键字时指定timeout参数值为0。
*** Settings ***
Library Selenium2Library
*** Test Cases ***
login
Open Browser http://www.126.com
Input Text id=idInput emailfortest2016
Input Password id=pwdInput 111112
Click Element id=loginBtn
Wait Until Element Is Visible link=退出 timeout=0
Click Element link=退出
Close Browser
如果三种方式对timeout参数设置了不同的值,根据就近原则关键字参数中设置的timeout参数会对当前关键字生效,但是通过导入参数和通过Set SeleniumTimeout设置参数改变的是全局的timeout值。
个人认为在实际的通常项目的测试过程中全局默认的5s超时时间比较合理,所以不需要在导入Selenium2Library库时指定timeout参数,也不需要通过Set SeleniumTimeout在测试用例中修改timeout参数值,当特殊的测试测试步骤或者测试场景需要修改timeout参数值时,可以通过在关键字中指定timeout参数值使其在局部生效。
implicit_wait
implicit_wait是selenium查找元素时的一个隐含超时时间,默认值为0。对上面的用例做一点修改,不采用Wait Until Element Is Visible来判断元素是否可见,而直接操作元素,用例脚本如下:
*** Settings ***
Library Selenium2Library
*** Test Cases ***
login
Open Browser http://www.126.com
Input Text id=idInput emailfortest2016
Input Password id=pwdInput 111112
Click Element id=loginBtn
Click Element link=退出
Close Browser
执行测试用例时会报查找不到元素的错误,因为在执行Click Element link=退出 时页面还没加载完成,implicit_wait的值为0,selenium在查找不到元素时立刻返回错误。
我们在导入selenium库时将implicit_wait设置为5秒,用例脚本如下:
*** Settings ***
Library Selenium2Library implicit_wait=5
*** Test Cases ***
login
Open Browser http://www.126.com
Input Text id=idInput emailfortest2016
Input Password id=pwdInput 111112
Click Element id=loginBtn
Click Element link=退出
Close Browser
再次执行用例脚本可正常执行。
也可以通过关键字Set Selenium Implicit Wait来设置全局的implicit_wait值,如下用例脚本也能正常执行。
*** Settings ***
Library Selenium2Library
*** Test Cases ***
login
Open Browser http://www.126.com
Input Text id=idInput emailfortest2016
Input Password id=pwdInput 111112
Click Element id=loginBtn
Set Selenium Implicit Wait 5
Click Element link=退出
Close Browser
个人认为在实际测试过程中不需要设置implicit_wait值,在对页面或者元素进行操作前都通过Wait …关键字先判断页面是否加载完成或者元素是否可见,这样测试脚本的健壮性会更好。
run_on_failure
当Selenium2Library某个关键字执行失败时将指定运行关键字run_on_failure。
*** Settings ***
Library Selenium2Library run_on_failure=Capture Page Screenshot
默认可以使用Capture Page Screenshot来截取当前页面内容。使用值’Nothing’可以完全禁用该功能。
screenshot_root_directory
screenshot_root_directory指定了Capture Page Screenshot关键字截取页面图片的存放路径。如果没有指定那么截图图片会默认存放在robotframework日志文件存放路径。
1,Sleep
一个线程等待的逻辑,进程等待N秒后再运行;
2,Implicit Wait
隐式等待,Get Selenium Implicit Wait 与 Set Selenium Implicit Wait分别是取隐式等待时间与设置隐式等待时间;隐式等待,在一定时间内找到元素则马上运行,如果超过规定时间,则会报错。
(1)Get Selenium Implicit Wait 默认获取的时间为0秒;
(2)Set Selenium Implicit Wait 默认设置的时间也为0秒,用在下一步动作之前;
3,Speed
这个关键字是为了减慢执行,让调试的时候能看清执行。提供了Get Selenium Speed 与 Set Selenium Speed两个关键字;
4,Timeout 全局超时时间
默认值为5秒,提供的关键字有:Get Selenium Timeout 与 Set Selenium Timeout;
全局超出时间同样可以在引入Selenium2Library 的时候设置
Robotframework关于等待时间的关键字
5,等待关键字都与timeout息息相关
后面跟随的参数如果不填,则为timeout的全局超出时间;
Wait Until Element Contains 等待元素匹配
Wait Until Element Is Enabled 等待元素可用
Wait Until Element Is Visible 等待元素可见
Wait Until Page Contains 等待页面内容匹配
Wait Until Page Contains Element 等待页面元素匹配
posted on 2020-09-21 22:48 jiapengchu 阅读(1201) 评论(0) 编辑 收藏 举报