跳转到主要内容

pytest插件,让您可以使用Selenium驱动浏览器

项目描述

See Build Status on Travis CI Documentation Status https://codecov.io/gh/davidemoro/play_selenium/branch/master/graph/badge.svg

pytest-play插件,在底层使用Selenium/Splinter驱动浏览器。与Selenium网格兼容,并具有隐式自动等待动作,以减少痛点并提高鲁棒性。

更多信息及示例请访问

基于浏览器的命令

此处列出基于浏览器的命令。默认情况下,play_selenium支持浏览器交互。例如,它可以用于运行selenium splinter场景,为您的UI测试或系统测试驱动浏览器。

如果您在无法使用页面对象方法(被认为是最佳实践)的情况下,play_selenium也是您的朋友。例如

  • 有限的时间,和/或

  • 缺乏编程技能

相反,如果您对页面对象模式感兴趣,请查看pypom_formpypom

play_selenium 支持自动等待,这有助于在继续之前提高测试的可靠性。默认情况下,它等待节点可用性和可见性,但它还支持一些等待命令,以及等待给定的 JavaScript 表达式变为可接受。因此,它既用户友好又灵活。

条件命令(JavaScript)

基于浏览器级别的表达式(JavaScript)

- type: clickElement
  provider: selenium
  locator:
    type: css
    value: body
  condition: "'$foo' === 'bar'"

支持的定位器

支持的选择器类型

  • css

  • xpath

  • tag

  • name

  • text

  • id

  • value

打开一个页面

使用参数化

- type: get
  provider: selenium
  url: "$base_url"

或使用常规 URL

- type: get
  provider: selenium
  url: https://google.com

暂停

此命令将调用一个 JavaScript 表达式,该表达式将暂停您的命令的执行流程

- type: pause
  provider: selenium
  waitTime: 1500

如果您需要对非 UI 测试进行暂停/睡眠,可以使用 play_python 插件提供的 sleep 命令。

点击一个元素

- type: clickElement
  provider: selenium
  locator:
    type: css
    value: body

填写文本

- type: setElementText
  provider: selenium
  locator:
    type: css
    value: input.title
  text: text value

与选择输入元素交互

按标签选择

- type: select
  provider: selenium
  locator:
    type: css
    value: select.city
  text: Turin

或按值选择

- type: select
  provider: selenium
  locator:
    type: css
    value: select.city
  value: '1'

评估 JavaScript 表达式

- type: eval
  provider: selenium
  script: alert('Hello world!')

从 JavaScript 表达式创建变量

JavaScript 表达式的值将存储在 play.variables 下,名称为 count

- type: storeEval
  provider: selenium
  variable: count
  script: document.getElementById('count')[0].textContent

断言 JavaScript 表达式匹配

如果表达式的结果不匹配,将引发 AssertionError 并使测试失败

- type: verifyEval
  provider: selenium
  value: '3'
  script: document.getElementById('count')[0].textContent

验证一个元素的文本是否包含一个字符串

如果元素文本不包含提供的文本,将引发 AssertionError 并使测试失败

- type: verifyText
  provider: selenium
  locator:
    type: css
    value: ".my-item"
  text: a text

向一个元素发送按键

支持所有 selenium.webdriver.common.keys.Keys

- type: sendKeysToElement
  provider: selenium
  locator:
    type: css
    value: ".confirm"
  text: ENTER

支持按键

KEYS = [
    'ADD', 'ALT', 'ARROW_DOWN', 'ARROW_LEFT', 'ARROW_RIGHT',
    'ARROW_UP', 'BACKSPACE', 'BACK_SPACE', 'CANCEL', 'CLEAR',
    'COMMAND', 'CONTROL', 'DECIMAL', 'DELETE', 'DIVIDE',
    'DOWN', 'END', 'ENTER', 'EQUALS', 'ESCAPE', 'F1', 'F10',
    'F11', 'F12', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8',
    'F9', 'HELP', 'HOME', 'INSERT', 'LEFT', 'LEFT_ALT',
    'LEFT_CONTROL', 'LEFT_SHIFT', 'META', 'MULTIPLY',
    'NULL', 'NUMPAD0', 'NUMPAD1', 'NUMPAD2', 'NUMPAD3',
    'NUMPAD4', 'NUMPAD5', 'NUMPAD6', 'NUMPAD7', 'NUMPAD8',
    'NUMPAD9', 'PAGE_DOWN', 'PAGE_UP', 'PAUSE', 'RETURN',
    'RIGHT', 'SEMICOLON', 'SEPARATOR', 'SHIFT', 'SPACE',
    'SUBTRACT', 'TAB', 'UP',
]

等待 JavaScript 表达式匹配

等待给定的表达式匹配或如果花费时间过长则引发 selenium.common.exceptions.TimeoutException

在编写本文时,存在一个全局超时时间(20 秒),但在未来的版本中,您将能够根据命令覆盖它

- type: waitUntilCondition
  provider: selenium
  script: document.body.getAttribute('class') === 'ready'

等待 DOM 中的元素出现

出现

- type: waitForElementPresent
  provider: selenium
  locator:
    type: css
    value: body

或不存在

- type: waitForElementPresent
  provider: selenium
  locator:
    type: css
    value: body
  negated: true

等待元素可见

可见

- type: waitForElementVisible
  provider: selenium
  locator:
    type: css
    value: body

或不可见

- type: waitForElementVisible
  provider: selenium
  locator:
    type: css
    value: body
  negated: true

断言元素存在于 DOM 中

如果断言失败,将引发 AssertionError

出现

- type: assertElementPresent
  provider: selenium
  locator:
    type: css
    value: div.elem

或不存在

- type: assertElementPresent
  provider: selenium
  locator:
    type: css
    value: div.elem
  negated: true

断言元素可见

如果断言失败,将引发 AssertionError

出现

- type: assertElementVisible
  provider: selenium
  locator:
    type: css
    value: div.elem

或不存在

- type: assertElementVisible
  provider: selenium
  locator:
    type: css
    value: div.elem
  negated: true

Twitter

play_selenium 的推文在这里发生

变更日志

0.0.3 (2019-06-26)

  • 根据新的 pytest-play 版本(>= 2.0),应使用 self.engine.parametrize 而不是访问 self.engine.parametrizer

0.0.2 (2019-02-18)

  • 移除 pytest 版本限制(添加对 pytest>=4 的兼容性)

0.0.1 (2019-01-25)

  • 支持新的 pytest-play >= 2.0 的基于 YAML 的语法(不再支持 json)

项目详情


下载文件

下载适合您平台的文件。如果您不确定要选择哪个,请了解更多关于 安装包 的信息。

源代码发行版

play_selenium-0.0.3.tar.gz (10.8 kB 查看散列)

上传时间 源代码

由以下支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面