基于python的BDD框架

2024-06-07 22:58:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要用黄瓜做一个测试

情景:

  1. 登录
  2. 选择第一个项目链接
  3. 将项目添加到购物车
  4. 继续购物车页面
  5. 检查清单上的项目是否正确
  6. 继续结帐
  7. 完成并注销

我不明白的是,我是否需要为每个步骤打开要素文件,是否需要为每个步骤关闭并重新打开浏览器?我该怎么做?我应该走哪条路

(请注意,我是一名初学者,英语能力有限,因此我需要一个简单的解释。)


Tags: 文件项目链接步骤浏览器能力页面黄瓜
1条回答
网友
1楼 · 发布于 2024-06-07 22:58:50

是的,您应该为每个功能创建一个新文件。例如,login.gherkin、upload.gherkin、logout.gherkin

抱歉,我不知道你说的是Python,但这是相同的想法

每个文件应具有如下布局:

# Created by Mick Jagger at 1/13/2021
  @login
Feature: Login

  Scenario: Login to Website Homepage
    When Launch website
    Then Enter username and password
    And Log in

然后使相应的步骤文件如下所示:

package glue;

import cucumber.api.java.en.*;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;

import java.util.List;

public class LoginSteps extends Driver {
    public String username = "username";
    public String password = "password";

    @When("Launch Website")
    public void launch_website() throws Throwable {
        driver.get("https://www.website.com/");
        Thread.sleep(2000);
    }

    @Then("^Enter username and password$")
    public void enter_credentials() throws Throwable {
        driver.findElement(By.xpath("//input[@aria-label='Phone number, username, or email']")).sendKeys(username);
        driver.findElement(By.xpath("//input[@aria-label='Password']")).sendKeys(password);
    }

    @And("^Log in$")
    public void log_in() throws Throwable {
        Thread.sleep(1000);
        List<WebElement> buttons = driver.findElements(By.tagName("button"));
        buttons.get(1).click();
        Thread.sleep(2000);
        driver.findElement(By.tagName("button")).click();
        Thread.sleep(1000);
        buttons = driver.findElements(By.xpath("//button[@tabindex='0']"));
        buttons.get(1).click();
    }
}

如果您不熟悉浏览器自动化,我建议您学习“页面对象模型方法”。而且,我不再使用这个恼人的框架,它本应该让事情变得更简单,但对我来说,它只是增加了额外的工作

相关问题 更多 >

    热门问题