我正在尝试使用python在带有黄瓜的硒中实现POM模式。当我尝试将参数从黄瓜特征文件传递到步骤定义时被阻止。我已经搜索过栈(link),但是解决方案并没有太大帮助。
请找到我的工作,并帮助我解决或将我重定向到任何资源,在哪里可以找到支持。
这是我的功能文件,正在尝试传递参数
尝试调试,没有运气。还要注意,我正在尝试使用python-behave和直接从功能文件运行的pycharm执行测试。
我尝试过但不起作用的解决方案:
1:
来自功能文件:launch the application 'url_address'
在步骤def文件中:@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 "(.*)" ')
提前谢谢
答案 0 :(得分:0)
问题是您在step_definition中的参数使用引号不一致。
如果在step_definition中对参数使用单引号,则在功能文件中也需要这样做。
您必须遵循(不同的)step_definitions:
@given('Launch the application "(.*)"')
@then("Click on '(.*)' image")
您应该选择一种方法。两者都很好,但是如果要保留它,则还需要以两种不同的方式在功能文件中调用它们。
QUICKFIX
下面的(.feature)示例应该可以与您的step_definitions如屏幕截图所示一样工作:
(在step_definition中定义了双引号,因此在功能中将双引号用于参数)
Given Launch the applicaion "https://www.whateverurl.com"
(在step_definition中定义了单引号,因此对功能中的参数使用单引号)
Then Click on 'imageName' image
建议: 在step_definitions中使用单引号作为步骤名称,并在参数中使用双引号(就像您在“启动应用程序”步骤中所做的一样)。只需记住,然后再用双引号来调用参数即可。
请告诉我这是否有帮助!
答案 1 :(得分:0)
Behave支持多个 step匹配器,以匹配步骤中的参数。 默认匹配器是 parse 匹配器。 因此,您的步骤定义应如下所示:
# -- FILE: features/steps/browser_steps.py
...
@given('launch the application "{url}"')
def step_given_launch_application(context, url):
print("Using url={0}".format(url))
# -- FILE: features/example.feature
Feature:
Scenario:
Given launch the application "https://example.com"
提示:
在上面的描述中,您有一个尾随空格:“ launch ... {url}”。 这可能会导致问题,因为在解析功能文件时,此空格可能不匹配。解析器在每一行的末尾删除空格。
双引号和单引号不同。 在小黄瓜和步骤定义中使用相同的内容。
大写与小写:步匹配区分大小写 您正在Gherkin中使用“给定启动应用程序...”,但在Python的步骤定义中正在使用“启动应用程序...”
如果要使用正则表达式步骤匹配器,则应使用命名参数(由于无法猜出您的意思,必须正确指定)
另请参见: