<p>从我们的评论来看,我可以看到实现你目标的两种方法:</p>
<h2>使用标记</h2>
<p>您可以利用标签并从<code>scenario</code><a href="https://behave.readthedocs.io/en/latest/api.html#behave.model.Scenario" rel="nofollow noreferrer">objects</a>访问它们。您应该注意以下几点:</p>
<p><a href="https://i.stack.imgur.com/RTEPP.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/RTEPP.png" alt="documentation snippet"/></a></p>
<p>这对我们将要做的事情非常重要。有一个关于如何使用标记控制事物的教程,可以在<a href="https://behave.readthedocs.io/en/latest/tutorial.html#controlling-things-with-tags" rel="nofollow noreferrer">here</a>中找到,但是一般的想法是让场景文件的结构如下:</p>
<pre><code>@Windows10_Chrome_76.0
@Windows10_Firefox_68.0
Scenario Outline: Test Button with the browser
Given I go to main page with the browser
Then I can see Fahrzeug finden Button
</code></pre>
<p>在<code>environment.py</code>中,您将拥有:</p>
<pre><code>def before_scenario(context, scenario):
for tag in scenario.tags:
(platform, browser, browserVersion) = tag.split('_')
if browser == "Chrome":
# Initialize the browser with platform, browser, etc.
context.browser = WebDriver.Chrome()
elif browser == "Firefox":
# Initialize the browser with platform, browser, etc.
context.browser = WebDriver.Firefox()
</code></pre>
<p>在<code>steps</code>文件中,您可以访问浏览器:</p>
<pre><code>@given(u'I go to main page with the browser')
def step_impl(context)
context.browser.get('https://yourUrl.com')
</code></pre>
<p>根据您的看法,缺点或者好处是,每个场景都需要用<code>platform-browser-browserVersion</code>标记,这有点麻烦。但主要的好处是,您可以更有效地控制在哪个浏览器上进行测试</p>
<h2>使用类</h2>
<p>您可以拥有某种浏览器处理类,比如<code>BrowserHandler</code>单例。但是,使用这种方法忽略了Python Behave的好处,所以我建议这样做</p>