我已使用 selenium web 驱动程序 JAVA 将产品添加到手推车中,然后将其从购物车中删除。我如何断言产品是不是被移除?

Posted

技术标签:

【中文标题】我已使用 selenium web 驱动程序 JAVA 将产品添加到手推车中,然后将其从购物车中删除。我如何断言产品是不是被移除?【英文标题】:I have added product to the trolley by using selenium web driver JAVA and I removed it from the cart. How can I assert the product is removed or not?我已使用 selenium web 驱动程序 JAVA 将产品添加到手推车中,然后将其从购物车中删除。我如何断言产品是否被移除? 【发布时间】:2021-12-21 18:35:00 【问题描述】:

这是我从手推车或购物车中取出产品。

public class TrolleyPage()
     public void removeFromTrolley() 
        List<WebElement> removeProductBtnList = driver.findElements(By.cssSelector("button[data-test='basket-removeproduct']"));
        int size = removeProductBtnList.size();
        System.out.println("Number of size of Added product in trolley " + size);
        WebElement removedWebElement = removeProductBtnList.get(0);
        removedWebElement.click();
    

它正在工作。 我已将“产品名称”存储在手推车的列表中,以验证手推车中的产品在移除后是否可用,但出现断言错误。

public class TrolleyPage()
    public List<String> getAllProductsInTrolley() 
        List<String> actualList = new ArrayList<>();
        List<WebElement> productWebElements = driver.findElements(By.cssSelector("a[data-e2e='product-name']"));
        for (WebElement product : productWebElements) 
            String productName = product.getText();
            if (!productName.isEmpty()) 
                actualList.add(productName);
                System.out.println("Product :" + productName);
            
        
        return actualList;
    

这是我的实际列表,我想与预期的比较我如何断言请帮助我

public class RemoveTheProductDefs 

    private TrolleyPage trolleyPage = new TrolleyPage();
    private String expected;


  @When("^I remove a product$")
    public void i_remove_a_product()  
        trolleyPage.removeFromTrolley();

    
--------- This is failing-------
    @Then("^I should see the the trolley is empty$")
    public void i_should_see_the_the_trolley_is_empty()  
        List<String> actualList = trolleyPage.getAllProductsInTrolley();
  
        assertThat(actualList,contains(expected));    

【问题讨论】:

【参考方案1】:

快速而简单的修复可能是比较 List 的大小。

sizeAfter = sizeBefore - 1

private int sizeBefore;

@Given("^I added products to trolley$")
public void i_added_products_to_trolley()  
    ...
    sizeBefore = trolleyPage.getAllProductsInTrolley().size();


...

@Then("^I should see the number of product in trolley decrease one$")
public void i_should_see_the_number_of_product_in_trolley_decrease_one()  
    int sizeAfter = trolleyPage.getAllProductsInTrolley().size();
    assertThat(sizeAfter , equalTo(sizeBefore - 1));    

【讨论】:

以上是关于我已使用 selenium web 驱动程序 JAVA 将产品添加到手推车中,然后将其从购物车中删除。我如何断言产品是不是被移除?的主要内容,如果未能解决你的问题,请参考以下文章

python自动化中使用selenium处理鼠标事件的方法详解

带有Python的Selenium Webdriver - 无法使用Selenium Web驱动程序在Web应用程序中提供输入(Date)

使用 Selenium 和 Chrome 开发工具的浏览器内存泄漏自动化

Selenium 使用远程 Web 驱动程序下载文件

无法为 Selenium 使用 chrome 驱动程序

使用Selenium自动化的Java Web小程序测试?