多测师是一家拥有先进的教学理念,强大的师资团队,业内好评甚多的接口自动化测试培训机构!

17727591462

联系电话

您现在所在位置:接口自动化测试培训 > 新闻资讯

selenium怎么实现关键字驱动-自动化测试

更新时间:2022-06-10 09:30:31 作者:多测师 浏览:67

  要做ui自动化测试,使用关键字驱动可以说是必须会的一种测试方式,它既可以在纯代码的自动化程序中运行,也可以在测试平台中使用。

selenium怎么实现关键字驱动-自动化测试

  使用纯代码方式时,自动化工程师先写好一个通用的程序,其他手工测试人员只需要把执行的页面操作关键字填入到一个表格当中,就可以执行自动化测试了。这个表格可以是 Excel 表格,也可是 yaml 文件。

  使用测试平台时,测试开发工程会编写一个界面,在假面中,手工测试人员也可以选择需要操作的页面关键字,选择完以后就可以执行自动化测试了。

  关键字驱动实现成本低,操作起来也方便,真是个做 ui 自动化测试的好方式。本文介绍一种简单的关键字驱动实现方式,不需要很高深的编程知识也能掌握。

  关键字驱动实现主要分为三个部分:

  ·关键字方法的定义,其实就是页面的通用操作,比如点击、输入等常见操作,由自动化测试工程师编写。

  · 关键字表格配置。谁编写自动化用例,谁配置这个表格,它主要定义用例需要执行的页面操作和测试数据,最好通过脚本自动生成固定格式的文件,并且把可以选择的操作名称说明,方便使用, 在测试平台中,可以通过下拉框搜索和选择的方式选择,会更加方便。

  · 调用关键字,执行页面操作。这个也是由自动化测试工程师编写,读取 yaml 文件中的页面操作,并且执行。

  定义关键字方法

  如果要对 web 网页进行自动化测试,我们可以定义 Page 类,封装点击、输入等页面操作。

  # keywords.py

  from selenium.webdriver.remote.webdriver import WebDriver

  from selenium.webdriver.remote.webelement import WebElement

  from selenium.webdriver.support import expected_conditions

  from selenium.webdriver.support.wait import WebDriverWait

  DEFAULT_TIMEOUT = 8

  class Page:

  def __init__(self, driver: WebDriver):

  self.driver = driver

  def goto(self, url):

  """页面访问"""

  self.driver.get(url)

  def wait_clickable(self, locator, timeout=None) -> WebElement:

  timeout = DEFAULT_TIMEOUT if timeout is None else timeout

  wait = WebDriverWait(self.driver, timeout=timeout)

  return wait.until(expected_conditions.element_to_be_clickable(locator))

  def wait_visible(self, locator, timeout=None) -> WebElement:

  timeout = DEFAULT_TIMEOUT if timeout is None else timeout

  wait = WebDriverWait(self.driver, timeout=timeout)

  return wait.until(expected_conditions.visibility_of_element_located(locator))

  def click(self, locator):

  """页面点击"""

  el = self.wait_clickable(locator)

  el.location_once_scrolled_into_view

  el.click()

  def fill(self, locator, words):

  """页面输入"""

  el = self.wait_visible(locator)

  el.send_keys(words)

  关键字表格

  关键字表格是一个自动化用例的测试步骤和数据,这里我们使用 yaml 文件,action 表示要使用的页面操作,它对应前面 Page 类中的同名方法, params 表示方法需要传入的测试参数。

  每个不同的用例,编写一个 yaml 文件,当需要运行自动化测试时,把 yaml 文件作为参数传入自动化程序中就可以了。

  # login.yaml

  -

  action: goto

  params:

  url: "https://petstore.octoperf.com/actions/Account.action?signonForm="

  -

  action: fill

  params:

  locator: ['name', 'username']

  words: 'yuze'

  -

  action: fill

  params:

  locator: ['name', 'password']

  words: '1234'

  -

  action: click

  params:

  locator: ['name', 'signon']

  使用关键字操作浏览器

  最后是通用的测试用例编写。定义一个 test_keyword 函数, 首先读取 login.yaml 文件中的测试步骤和数据,使用 getattr 方法, 把需要调用的页面操作名称 goto, fill, click 传入,获取 Page 类中的同名方法,调用这些方法就能实现对应的自动化操作。

  这些代码大多数不需要进行额外修改,当需要运行不同的测试用例,只需要修改 yaml 文件的名称,调用不同的 yaml 测试步骤。

  # test_login.py

  import yaml

  import pytest

  from selenium import webdriver

  from keyworks import Page

  @pytest.fixture

  def driver():

  d = webdriver.Chrome()

  d.implicitly_wait(8)

  d.maximize_window()

  yield d

  d.quit()

  def test_keyword(driver):

  """获取 yaml 文件"""

  with open('signin.yaml', encoding='utf-8') as f:

  steps = yaml.safe_load(f)

  page = Page(driver)

  for step in steps:

  action_name = step.get('action')

  params = step.get('params')

  action = getattr(page, action_name)

  action(**params)

  运行

  现在,我们只需要定义不同的 yaml 文件,然后使用 pytest 这样的测试框架来运行自动化用例就可以。 但是,作为一个简单版关键字驱动实现方式,这个程序还有很多的优化空间。

  比如,现在编写多个 yaml 文件后,还需要创建多个 python 的 test 文件。而更加常见的方式是,可以通过命令行配置一个 yaml 文件,我就可以运行该 yaml 文件的测试步骤。

  配置多个 yaml 文件,就可以运行多个 yaml 文件的测试步骤。甚至可以配置文件夹名称,就运行文件夹下所有的 yaml 文件的测试步骤。

  以上内容为大家介绍了自动化测试中的selenium怎么实现关键字驱动,本文由多测师亲自撰写,希望对大家有所帮助。了解更多自动化测试相关知识:https://www.aichudan.com/xwzx/

联系电话

17727591462

返回顶部