首页 > 解决方案 > Python无法将参数从特征文件传递到黄瓜中的步骤定义

问题描述

我正在尝试使用 python 用黄瓜在 selenium 中实现 POM 模式。当我尝试将参数从黄瓜功能文件传递到步骤定义时被阻止。我已经在 stack over flow ( link ) 上进行了搜索,但解决方案对我没有多大帮助。

请找到我的工作并帮助我解决或将我重定向到任何资源,我在哪里可以找到支持..

这是我的功能文件并尝试传递参数

在此处输入图像描述

下面是我的步骤定义实现, 在此处输入图像描述

尝试调试但没有运气。另请注意,我正在尝试使用 python-behave 和直接从功能文件运行的 pycharm 执行测试。

我尝试过但没有奏效的解决方案:

1:来自功能文件:launch the application 'url_address' 在步骤定义文件中:@given('launch the application {url} ')

2:来自特征文件:launch the application 'url_address' 在步骤def文件中:@given('launch the application "{url}" ')

3:来自特征文件:launch the application '<url_address>' 在步骤def文件中:@given('launch the application "{url}"')

4:来自特征文件:launch the application '<url_address>' 在步骤def文件中:@given('launch the application "(.*)" ')

先感谢您

标签: pythonseleniumautomationcucumberpython-behave

解决方案


问题是您对 step_definition 中的参数使用的引号不一致。

如果您在 step_definition 中使用单引号作为参数,您也需要在功能文件中这样做。

您必须遵循(不同的)step_definitions:

@given('Launch the application "(.*)"')

@then("Click on '(.*)' image")

你应该选择一种方法来做到这一点。两者都很好,但是如果您想保留它,您还需要在功能文件中以两种不同的方式调用它们。


快速解决

下面的 (.feature) 示例应该适用于您的 step_definitions ,如屏幕截图所示:

(双引号定义在step_definition中,所以feater中的参数使用双引号)

Given Launch the applicaion "https://www.whateverurl.com"

(step_definition 中定义了单引号,所以在 feature 参数中使用单引号)

Then Click on 'imageName' image

建议: 在您的 step_definitions 中使用单引号作为步骤名称,并使用双引号作为参数(就像您在“启动应用程序”步骤中所做的那样)。只要记住 ik 记住用双引号调用参数。

请让我知道这是否有帮助!


推荐阅读