在我们的网络应用程序中,登录某个页面需要很长时间。我们的功能和方案集是从该特定页面编写的。我们在该页面之前没有任何验证。只需要10分钟即可到达该页面。
在我进一步解释之前。这是在Cucumber,我们正在使用Selenium和Java。
因此应该完成登录操作,并且webdriver会话应该保持不变,然后开始场景验证。以下功能具有以下方案。每个后续场景都取决于前一个场景。意思是,这些场景需要按顺序执行。
第一个功能应该按顺序执行方案。 然后第二个功能应该按顺序执行方案。 在此期间,我不希望为第二个场景创建新会话。 这些都是顺序依赖的。
我该如何实现?
Feature: Add a product to the quote
So that the quotation can be built on the added product
Scenario: Add a Hub
Given User A has logged in
Then Add button is available
Then Add Hub
Then Enter correct Address details
Then select correct bandwidth
And Save to Quote
Scenario: Add a Spoke
Given User A has logged in
Then Add button is available
Then Add Spoke
Then Enter correct Address details
Then select correct bandwidth
And Save to Quote
Feature: Give discount to the quote for Hub
So that the quotation can be sent to the customer
Scenario: Give 10% discount
Given Hub has already been added
Then Go to the Quote Tab
Then Enter the discount
Then Save the Quote
答案 0 :(得分:0)
顺序运行功能 - 有两种方法可以执行此操作。第一个,取决于黄瓜以字母顺序运行功能的事实。因此,请相应地命名。但是这种方法很容易被一个新的特征文件名打破,该特征文件名插入您之前创建的文件名之间。其次,在cucumberoptions功能值中指定运行顺序,例如跑步者文件中的features = "second.feature,first.feature"
。这将首先运行second.feature。有关详细信息,请参阅this。
保持驱动程序在功能文件中保持活动 - 使用其中包含静态WebDriver
的{{3}}概念和最后关闭驱动程序的JVM关闭挂钩。虽然您可能需要在挂钩之前和之后添加适当的清理cookie等。
答案 1 :(得分:0)
您应该修复您的Web应用程序,以便登录不会花费很长时间,而不是通过尝试保留场景之间的会话来使您的Cukes完全不可靠。有时你的测试会给你反馈,而不是解决问题;)
由于登录是一件非常简单的事情,99.999%的Web应用程序可以快速有效地完成,我发现很难相信您的应用程序非常特殊而且您无法执行此操作。如果你不能那么也许你应该创建一个新的问题来解释为什么你的登录速度太慢并找到一些解决方案
场景之间的会话共享意味着共享会话的所有Cuke都不能执行任何更改任何数据的操作而不会使您的场景不可靠。这意味着不应允许任何导致POST而不是GET的交互。所以没有表格填写,提交表格等等。
你当然可以解决这个问题,但它会产生严重的问题,这些问题只会在稍后出现。然后,当场景开始失败时,它将花费你10倍的时间来弄清楚它们失败的原因,因为你必须了解整个连接场景链。