SeleniumLibrary:Robot Framework下Web自动化测试

SeleniumLibrary简介

SeleniumLibrary是一个专为Robot Framework设计的Web测试库,内部封装了Selenium工具,测试人员可以通过Robot Framework的简洁语法,轻松实现Web应用的自动化测试。该项目托管在GitHub上,可以从PyPI下载。目前,SeleniumLibrary支持Selenium 4,兼容Python 3.8至3.13版本,同时兼容PyPy解释器。

安装SeleniumLibrary

推荐安装方法

SeleniumLibrary的安装非常简单,推荐使用pip进行安装:

pip install --upgrade robotframework-seleniumlibrary

如果是首次安装该库,可以省略--upgrade选项。

从GitHub仓库安装

从GitHub仓库安装最新源代码:

pip install git+https://github.com/robotframework/SeleniumLibrary.git

请注意,由于pip需要克隆SeleniumLibrary项目到临时目录并进行安装,因此该过程可能需要一些时间。

安装浏览器驱动

在安装完SeleniumLibrary后,还需要安装与浏览器和操作系统相对应的浏览器驱动。这些驱动与直接使用Selenium时所需的驱动相同。可以通过Selenium文档或搜索引擎找到所需驱动的下载链接。通常,将下载的驱动放置在系统的PATH环境变量所包含的目录中即可。

为了简化驱动管理,还可以使用WebDriverManager这一工具。它可以根据需要找到并下载最新版本的浏览器驱动,并将其放置在正确的位置。WebDriverManager支持Windows、macOS和Linux等主流操作系统,以及Chrome、Firefox、Opera和Edge等浏览器。

SeleniumLibrary的使用

导入库与设置

要在Robot Framework测试中使用SeleniumLibrary,首先需要在测试数据文件中导入该库。导入时,可以使用Library设置,并传递一些导入时参数(这些参数在关键字文档中有详细说明)。

示例:

*** Settings ***
Documentation     Simple example using SeleniumLibrary.
Library           SeleniumLibrary

*** Variables ***
${LOGIN URL}     http://localhost:7272
${BROWSER}       Chrome

*** Test Cases ***
Valid Login
    [Documentation]    Open browser to login page, input username and password, submit credentials, and verify welcome page.
    Open Browser To Login Page
    Input Username    demo
    Input Password    mode
    Submit Credentials
    Welcome Page Should Be Open
    [Teardown]    Close Browser

*** Keywords ***
Open Browser To Login Page
    [Arguments]    ${url}    ${browser}
    Open Browser    ${url}    ${browser}
    Title Should Be    Login Page

Input Username
    [Arguments]    ${username}
    Input Text    username_field    ${username}

Input Password
    [Arguments]    ${password}
    Input Text    password_field    ${password}

Submit Credentials
    Click Button    login_button

Welcome Page Should Be Open
    Title Should Be    Welcome Page

在这个示例中,首先导入了SeleniumLibrary,并定义了登录URL和浏览器类型两个变量。然后,编写了一个名为“Valid Login”的测试用例,用例依次执行打开浏览器、输入用户名和密码、提交凭证以及验证欢迎页面是否打开等操作。最后,还定义了一些关键字,以便在测试用例中复用。

关键字文档

SeleniumLibrary提供了丰富的关键字供测试人员使用。这些关键字涵盖了浏览器操作、元素定位与交互、页面验证等多个方面。为了获取关键字的详细信息和使用示例,可以查阅SeleniumLibrary的关键字文档(https://robotframework.org/SeleniumLibrary/SeleniumLibrary.html)。

扩展SeleniumLibrary

虽然SeleniumLibrary已经提供了大量的关键字来满足常见的Web测试需求,但在某些特定场景下,可能还需要自定义一些关键字或扩展现有功能。可以利用SeleniumLibrary提供的插件API来实现。

添加新关键字

通过插件API,可以添加新的关键字。只需定义一个Python函数,使用@keyword装饰器进行装饰即可:

from SeleniumLibrary import SeleniumLibrary
from robot.api import logger

class MySeleniumLibrary(SeleniumLibrary):

    @keyword
    def log_element_text(self, locator):
        """Logs the text of the element specified by the locator."""
        element = self.find_element(locator)
        text = element.text
        logger.info(f'Element text: {
      
      text}')
        return text

示例中,创建了一个名为MySeleniumLibrary的类,该类继承自SeleniumLibrary。然后,定义了一个名为log_element_text的新关键字,该关键字接受一个定位器参数,并打印出对应元素的文本内容。

修改现有关键字

除了添加新关键字外,还可以通过重写父类中的方法来修改现有关键字的行为:

class MySeleniumLibrary(SeleniumLibrary):

    def click_element(self, locator):
        """Overrides the click_element method to add additional logging."""
        logger.info(f'Clicking element at locator: {
      
      locator}')
        super().click_element(locator)

示例中,重写了click_element方法,并在调用父类方法之前添加了一条日志记录。