使用 Java 在 Playwright 中集成 Cucumber
Cucumber 是一种流行的行为驱动开发(BDD) 框架,允许您以自然语言格式编写可执行规范。它通过提供每个人都能理解的通用语言来促进利益相关者、开发人员和测试人员之间的协作。Cucumber支持各种编程语言,包括 Java,并提供一组丰富的功能来定义和执行测试场景。
另一方面,Playwright 是一个强大的开源自动化框架,用于支持多种编程语言(包括 Java)的 Web 浏览器。它提供了一个高级API,用于自动化 Web 浏览器,例如 Chrome、Firefox 和 Safari。Playwright 提供强大的浏览器自动化功能,包括与网页交互、截取屏幕截图、处理 cookie 等等。
通过将 Cucumber 与 Playwright 集成,您可以利用 Cucumber 自然语言场景的表现力,并将其与 Playwright 的浏览器自动化功能相结合。这种组合允许您以人类可读的格式编写测试并针对真实浏览器执行它们,从而实现 Web 应用程序的端到端测试。
在 Java 中将 Cucumber 与 Playwright 集成提供了一种无缝的方式来表达和自动化验收标准,从而更轻松地协作并确保您的 Web 应用程序的质量。
前提
Eclipse IDE 已安装。
Java 已 安装。
Maven 已经安装在 Eclipse中。
本博客涵盖的场景与黄瓜
启动程序
验证应用程序的标题。
登录网站。
验证产品
单击应用程序的 Hamburger 和注销。
使用 Playwright 和 Java 实现上述场景的高级步骤
创建Maven项目
为页面类创建包。
为测试运行器、功能和步骤定义创建包。
在 ->features 下创建一个特征文件。
为 HomePage 和 LoginPage 创建页面类。
在 LoginPage 类下创建方法。
在 HomePage 类下创建方法。
在 ->stepdefinitions 下创建测试类。
在 ->testrunner 下创建 testrunner 类。
运行测试用例。
步骤说明
在 域名 中添加 Playwright 和其他依赖项
在 域名 中添加以下依赖项
<dependencies> <dependency> <groupId>域名wright</groupId> <artifactId>playwright</artifactId> <version>域名.1</version> </dependency> </dependencies> <dependency> <groupId>域名mber</groupId> <artifactId>cucumber-java</artifactId> <version>6.9.1</version> </dependency> <dependency> <groupId>域名mber</groupId> <artifactId>cucumber-junit</artifactId> <version>6.9.1</version> <scope>compile</scope> </dependency>
第一步:创建 Maven 项目
我们可以看到下面的项目已经创建,名称为“ NewPlayWrightProject。”
第 2 步:为页面类创建包
在 src/main/java下创建包-> 名称为“域名s”。
第 3 步:为 Testrunner、功能和步骤定义创建包
在 -> src/test/java下创建三个包,“testrunner”、“features”和“stepdefinitions” 。
第 4 步:创建特征文件
在功能包下,创建一个名为“LoginAndHomeTest .feature ”的 .feature 文件。
功能:登录
场景大纲:使用正确的凭据登录到 SwagLabs 应用程序。
给定用户启动了 SwagLabs 应用程序。
当用户验证页面标题时。
当用户使用用户名“<UserName>”和密码“<Password>”登录应用程序时。
然后用户验证产品名称“<ProductName>”。
然后用户从应用程序注销。
例子:
| 用户名 | 密码 | 产品名称 |
| 标准用户 | 秘密酱 | Sauce Labs 背包| SHOPBOP
第 5 步:为 HomePage 和 LoginPage 创建页面类
第 6 步:在LoginPage C类下创建方法
在 域名下,创建用于登录/验证产品和从站点注销的方法。
在 域名s 包下创建方法 。
1. 验证标题();
2. loginIntoApplication(字符串电子邮件,字符串传递);
3.注销应用程序();
其他方法:
enterUserName(字符串电子邮件),enterPassword(字符串传递),clickLoginButton(),clickOnHamburger() 和 clickOnLogout()。
import 域名域名ser; import 域名域名serType; import 域名域名; import 域名域名wright; import 域名域名Page; import 域名域名nPage; import 域名.域名n; import 域名.域名; import 域名.域名; public class LoginCucumberTest { LoginPage login; HomePage home; Playwright playwright = 域名te(); BrowserType firefox = 域名fox(); Browser browser = 域名ch(new 域名chOptions().setHeadless(false)); Page page = 域名age(); @Given(“User launched SwagLabs application”) public void setUp() { 域名gate(“https://域名/“); home = new HomePage(page); login = new LoginPage(page); } @When(“User verify the Page title”) public void verifyPageTitle() { String title = 域名fyTitle(); 域名rtEquals(title, “Swag Labs”); } //Login into the application @When(“User logged in the app using username {string} and password {string}”) public void loginIntoTheApplication(String username,String password ) { 域名nIntoApplication(username, password); } //Verify product name after login @Then(“User verify the product name {string}”) public void verifyProductsName(String productname) { String productName = 域名roductName(); 域名rtEquals(productName, productname); } //Logout from application @Then(“User logout from the application”) public void logoutFromApplication() { 域名utApplication();} }
第 7 步:为HomePage C类创建方法
在 Home 域名下创建以下方法。
产品名称(); //验证站点上的产品名称。
package 域名s; import 域名域名; public class HomePage { Page page; // Locator — — — – String productName_1 =”id=item_4_title_link”; //initialize Page using constructor public HomePage(Page page) { 域名 =page;} //Method public String productName() { String productName = 域名Content(productName_1); return productName;}}
步骤 8:创建测试类
在 stepdefinitions下-> 创建 “域名”类以调用在 域名 和 域名 下创建的所有方法。
package stepdefinitions; import 域名rt; import 域名域名rTest; import 域名域名reTest; import 域名域名; import 域名域名ser; import 域名域名serType; import 域名域名; import 域名域名wright; import 域名域名Page; import 域名域名nPage; import 域名.域名n; import 域名.域名; import 域名.域名; public class LoginCucumberTest { LoginPage login; HomePage home; Playwright playwright = 域名te(); BrowserType firefox = 域名fox(); Browser browser = 域名ch(new 域名chOptions().setHeadless(false)); Page page = 域名age(); @Given(“User launched SwagLabs application”) public void setUp() { 域名gate(“https://域名/“); home = new HomePage(page); login = new LoginPage(page); } @When(“User verify the Page title”) public void verifyPageTitle() { String title = 域名fyTitle(); 域名rtEquals(title, “Swag Labs”); } //Login into the application @When(“User logged in the app using username {string} and password {string}”) public void loginIntoTheApplication(String username,String password ) { 域名nIntoApplication(username, password); } //Verify product name after login @Then(“User verify the product name {string}”) public void verifyProductsName(String productname) { String productName = 域名roductName(); 域名rtEquals(productName, productname); } //Logout from application @Then(“User logout from the application”) public void logoutFromApplication() { 域名utApplication();} }
package 域名runner; import 域名域名ith; import 域名域名mber; import 域名域名mberOptions; @RunWith(域名s) @CucumberOptions( features = “src/test/java/features/”, glue = {“stepdefinitions”}, plugin = {“pretty”}) public class SauceDemoTestRunner { }
第 10 步:运行测试用例
运行测试用例的两种方式。
方法一:
打开 testrunner 类,右键单击并运行为 -> Junit 测试。
方法二:
我们可以通过右键单击 .feature 文件来运行它。
运行测试用例后的报告
结论
将 Cucumber 与 Playwright 集成,您可以利用 Cucumber 的功能文件和步骤定义的表现力来驱动您的 Playwright 自动化测试。这种组合允许您以面向业务的语言编写可读和可维护的测试,涵盖您的 Web 应用程序的行为。Cucumber with Playwright in Java 提供了一种无缝的方式来表达和自动化验收标准,使协作更容易并确保您的 Web 应用程序的质量。