Skip to main content

使用 Selenium 的设施

项目描述

版本

下载

测试

覆盖范围

最新的 PyPI 版本

PyPI 下载次数

特拉维斯结果

工作服结果_

PyBrowserTest

PyBrowserTest 是一个(非常)小的框架,用于创建浏览器测试。

它包装了所有的 selenium 初始化,以便更容易地开始这些类型的测试。它非常灵活,可以与您最喜欢的跑步者一起使用。

PyBrowserTest 为每个测试打开一个干净的环境。它很慢,但很安全。

它需要 python-selenium 才能正常工作,因为它只是它的包装器。

安装

只是:

pip install pybrowsertest

一个例子

让我们从一个完整的例子开始:

import unittest
from pybrowsertest import BrowserTestCase

class AutomationTest(BrowserTestCase):
    def test_the_title_is_set(self):
        page = self.browser.open('/')
        self.assertEquals("Directory listing for /", page.title)

这个小代码打开一个浏览器,在'/'处定位页面并检查标题是否是给定的。

请注意,测试类继承自BrowserTestCase,以及它如何具有公共属性以获取 selenium 驱动程序实例。它使用此驱动程序来加载页面并进行检查。

特征

是什么让这个小框架如此特别?

  • 如果您的一项测试失败,它将从最后一个屏幕截取屏幕截图作为调试的附加数据。

  • 您可以为任何元素的出现设置超时。

  • 它不会覆盖方法setUptearDown,因此对于您当前的测试是安全的。

  • 它为每个测试使用一个新的浏览器实例。这很慢,但却是确保您拥有一个干净的环境(没有 cookie、会话或其他任何东西)的更安全的方法。

  • 它从文件中读取配置,允许您修改文件并使用另一个浏览器再次运行测试。您可以更改配置文件,甚至可以从测试中设置配置。

  • 它提供了一些有用的装饰器来避免在某些浏览器中进行测试。

  • 你可以使用你最喜欢的跑步者:unittest.mainnosetestszope.testrunnerpytong),……甚至你自己的跑步者(就像我必须做的那样来测试它

装饰器

并非所有浏览器都以相同的方式工作,因此会有一些测试无法在其中一些中执行。正因为如此,这个框架提供了一些装饰器来让开发者的生活更轻松:

onlyIfBrowserIn

此装饰器将允许您仅排除某些浏览器的测试。

例子:

@onlyIfBrowserIn('chrome', 'firefox')
def test_example(self):
    pass

onlyIfBrowserNotIn

相反onlyIfBrowserIn,只有在您使用这些浏览器时才会执行测试。

@onlyIfBrowserNotIn('chrome', 'firefox')
def test_example(self):
    pass

配置

PyBrowserTest 是高度可配置的。您可以使用三个文件来配置它。从最低优先级到最高优先级:

  • /etc/pybrowsertest.cfg

  • .pybrowsertest.cfg

  • pybrowsertest.cfg

文件将具有典型的 INI 文件格式,带有部分和关键字。

请检查文件browsertest.cfg.template以获取更多信息。

也许您对将自己的配置文件用于一个测试文件不感兴趣。您可以通过设置变量来做到这一点:

from pybrowsertest import BrowserConfiguration
BrowserConfiguration.default_configuration_files = ['whatever']

您可以在测试中手动覆盖每个变量:

from pybrowsertest import BrowserConfiguration
BrowserConfiguration.default_selenium_url = 'http://localhost:6666/wd/hub'
BrowserConfiguration.default_selenium_mode = 'firefox'

API

对象已尽可能简单和预期。因此,您可以通过调用属性直接从测试中访问浏览器browser。在这里你会发现一些非常有用的方法:

browser

  • open(url): 将加载一个新页面。它将返回一个“页面”对象。

  • close(): 将结束会话并关闭浏览器。不要使用它。每次测试后都会自动调用。

  • refresh(): 将刷新当前页面。

  • back():如果可能,转到历史记录的上一页。

  • forward():如果可能,转到历史的下一页。

  • add_cookie(key,value): 添加一个 cookie,其keyvalue.

  • get_cookie(key): 通过它来检索一个 cookie key

  • delete_cookie(key): 删除一个 cookie,给它key.

  • delete_all_cookies(): 清除所有cookies。

page

  • get_screenshot_as_file(filename):在文件中存储 PNG 屏幕截图filename

  • find_element(id): 检索 id 为“ id”的元素。应该只有一个。

  • find_element_by_css_selector(selector): 检索第一个匹配的元素selector

  • find_elements_by_css_selector(selector): 检索所有匹配的元素selector

  • find_element_by_xpath(selector): 检索第一个匹配的元素selector

  • find_elements_by_xpath(selector): 检索所有匹配的元素selector

  • find_element_by_tag_name(name):检索带有标签的第一个元素name

  • find_elements_by_tag_name(name):检索所有带有标签的元素name

  • find_element_by_class_name(name):检索具有类的第一个元素name

  • find_elements_by_class_name(name):检索所有具有类的元素name

为了提高性能,所有find_*方法都将返回一个生成器。并且它们都有一个可选参数timeout,该参数将等待一段时间让元素出现。

widgets

有一个通用的 Widget 类型,但对于某些类型,最常用的属性可以作为对象属性检索,最常用的操作是对象方法。

除了所有这些方法之外,它们都将具有这些方法find_*

  • click():模拟鼠标点击小部件。

  • get_attribute(name):检索属性名称的值。

  • is_displayed():如果显示小部件,则为真。

  • is_enabled():如果小部件已启用,则为真。

和属性:

  • id: 小部件标识符

  • text: 小部件内的文本

  • size: 像{'width': 30, 'height': 30}的字典,带有小部件大小。

  • location: 对象的位置。

  • tag_name:小部件标签。

A小部件

该小部件A将具有一些额外的属性:

  • href: 目标网址

  • target: 网址行为。

Input小部件

小部件“输入”将有一些额外的方法:

  • clear(): 删除任何值

  • is_selected():如果类型是'checkbox'或'radio'并且它被选中,则为真。

  • send_keys(keys): 将一个接一个地键入键。

和属性:

  • type: 输入类型

  • value: 当前值

  • placeholder: 没有值时显示的文本。

TextArea小部件

小部件“textarea”将有一些额外的方法:

  • clear(): 删除任何值

  • send_keys(keys): 将一个接一个地键入键。

和属性:

  • rows: 行数

  • value: 当前值

  • placeholder: 没有值时显示的文本。

Form小部件

小部件“表单”将有一些额外的方法:

  • submit(): 发送表格。

和属性:

  • method: 通常是 POST 或 GET。

  • action:目标网址。

贡献

如果你想贡献,你应该知道如何运行测试。这些是克隆存储库后的步骤:

# You will need a Server running. You can use your own... or this:
make tests_server

# webdriver is required too:
make selenium_server_start

# This command will download all what you need for you:
make tests

注意:该命令将让您停止 selenium 服务器和本地服务器。

如果您想看到更干净的窗口,只需在不同的窗口中启动 selenium 服务器和本地服务器,或者将其输出重定向到/dev/null

我们自己的跑步者

为了测试这个框架,有必要构建我们自己的运行器。有必要捕获跳过的测试,以检查它们是否真的被跳过;捕捉失败的测试,检查它们是否真的失败了,等等。所以你需要运行./run_tests.py脚本来测试自己的 pybrowsertest 库。

请记住:./run_tests.py脚本对您自己的测试没有用处;只在这个图书馆。

下载文件

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

源分布

pybrowsertest-0.0.5.tar.gz (9.4 kB 查看哈希)

已上传 source