如何在行为框架中使用夹具使Selenium Webdriver保持为before_tag钩子的一部分?

问题描述 投票:0回答:1

我正在使用behave框架进行测试,某些功能文件不需要运行浏览器。因此,我尝试按照https://behave.readthedocs.io/en/latest/tutorial.html#controlling-things-with-tags中的说明使用带有标签的灯具。问题是CLEANUP-FIXTURE PART在驱动程序启动后立即运行。

environment.py



@fixture
def selenium_webdriver(context):
    # -- SETUP-FIXTURE PART:
    context.driver = webdriver.Remote(
        command_executor='http://my-selenium-server:4444/wd/hub',
        desired_capabilities=DesiredCapabilities.CHROME)
    context.driver.set_page_load_timeout(30)
    context.driver.maximize_window()
    yield context.driver
    # -- CLEANUP-FIXTURE PART:
    context.driver.quit()

fixture_registry1 = {
    "fixture.selenium_webdriver": selenium_webdriver
}

def before_tag(context, tag):
    if tag.startswith("fixture.selenium_webdriver"):
        return use_fixture_by_tag(tag, context, fixture_registry1)

测试功能

@fixture.selenium_webdriver
Feature: Test

  Scenario: My Scenario
    Given Something
    When I do anything
    Then Something happens

在方案执行期间,驱动程序成功启动,但是之后立即结束。我试图注释CLEANUP-FIXTURE PART:下的行以使其保持运行,但是这种行为与selenium会话失去了联系。关于如何仅启动Selenium Webdriver以获得特定标签和功能的任何想法?

python selenium testing automation bdd
1个回答
0
投票

好吧,再次阅读文档,我找到了一个对我有用的解决方案。这是我所做的:

environment.py

@fixture
def selenium_webdriver(context):
    # -- SETUP-FIXTURE PART:
    context.driver = webdriver.Remote(
        command_executor='http://my-selenium-server:4444/wd/hub',
        desired_capabilities=DesiredCapabilities.CHROME)
    context.driver.set_page_load_timeout(30)
    context.driver.maximize_window()
    yield context.driver
    # -- CLEANUP-FIXTURE PART:
    context.driver.quit()

fixture_registry1 = {
    "fixture.selenium_webdriver": selenium_webdriver
}

def before_feature(context, feature):
    if "fixture.selenium_webdriver" in feature.tags:
        use_fixture(selenium_webdriver, context)

测试功能

@fixture.selenium_webdriver
Feature: Test

  Scenario: My Scenario
    Given Something
    When I do anything
    Then Something happens

使用before_feature钩子代替before_tag完成了trick俩。

© www.soinside.com 2019 - 2024. All rights reserved.