我正在使用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以获得特定标签和功能的任何想法?
好吧,再次阅读文档,我找到了一个对我有用的解决方案。这是我所做的:
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俩。