【问题标题】:Pytest webdriver fixture can't introspect some optionsPytest webdriver 夹具无法内省某些选项
【发布时间】:2018-02-22 16:37:13
【问题描述】:

我的框架目前只有一个 conftest.py 文件,其中包含一个名为 browser 的夹具,它将 webdriver 对象返回给测试。我们最近尝试在_generate_configuration_中实现metafunc.parametrize,以便在browserstack上测试跨浏览器和跨平台,但遇到了问题。当在 ui 测试开始时调用浏览器夹具时,它不知道基于 metafunc.parametrize 方法运行测试的当前浏览器/操作系统/版本。

可以在这里找到一个很好的示例,但我喜欢使用fixture 处理webdriver 对象的想法,因为当webdriver 超出范围时使用yield 语句处理它是多么容易。它还干掉了代码:https://qxf2.com/blog/selenium-cross-browser-cross-platform-pytest/

【问题讨论】:

标签: python selenium pytest


【解决方案1】:

Webdrivers 作为固定装置是我强烈推荐的一种很好的方法,特别是因为一旦你的测试完成,你就可以获得免费的拆卸和 driver.quit()。如果您的驱动程序要处理不同的版本/浏览器,我强烈建议您执行以下操作:

  1. 为不同的浏览器/版本创建包含 DesiredCapabilities 的运行配置字典
  2. 如果您只想每次都针对所有配置测试所有内容,请将您的参数化测试生成配置为迭代所有运行配置
  3. 如果您希望能够针对特定的目标,请在您的 conftest.py 中为 --run-configuration 添加一个命令行参数,该参数映射到您的配置中所需的 DesiredCapabilities。
  4. 编写一个名为desired_capabilities (scope=session) 的fixture,它读取config.getoption('--run-configuration') 并将关联的DesiredCapabilities 传递给驱动fixture 中的webdriver 调用。

【讨论】:

    猜你喜欢
    • 2014-08-21
    • 1970-01-01
    • 1970-01-01
    • 2019-03-22
    • 2022-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多