当前位置: 首页 > 知识库问答 >
问题:

Selenium PageObject模式:获取对象列表

公孙茂学
2023-03-14

我有一个提供某种搜索的应用程序页面,它将搜索结果项列表返回给用户。因此,我的测试首先登录到应用程序,然后在主页上开始搜索,如下所示:

HomePage homePage = loginPage.login();     
homePage.searchFor(items);  

测试搜索结果是否包含设计方面的预期列表项的最佳实践方法是什么?

>

  • 我可以向Page对象添加返回结果项的方法,然后我可以在测试类上对它们做任何我想做的事情。

    public void someTest(List<Items> expectedResultItems) {
        ...
        HomePage homePage = loginPage.login();     
        homePage.searchFor(items);  
        List<Item> resultItems = homePage.getItems();
        Util.compareItems(resultItems, expectedResultItems);
    }
    

    我可以向页面对象本身添加比较方法。

    public void someTest(List<Items> expectedResultItems) {   
    
        ...
        HomePage homePage = loginPage.login();     
        homePage.searchFor(items);  
        homePage.compareItems(List<Item expectedItems);
    }
    
  • 共有1个答案

    柴衡
    2023-03-14

    看看这里和这里

    页面对象的设计方式有很大的灵活性,但要获得测试代码所需的可维护性,有一些基本规则。页面对象本身永远不应该进行验证或断言。这是测试的一部分,应该始终在测试代码中,而不是在页面对象中。页面对象将包含页面的表示,页面通过方法提供的服务(但与测试内容相关的代码不应在页面对象中)。

    因此,根据这条指导原则,选择第一条。将断言放在测试中,而不是隐藏在页面对象的某个地方,可以让测试更容易阅读和理解它在做什么。

    话虽如此,我个人倾向于使用第二种方法,这主要是因为我开始是这样的,现在我已经习惯了。所以我基本上只是在pageObject中有一个类似于公共无效验证的公共方法

     类似资料:
    • 示例代码如下所示- 如何内嵌此“services”变量?

    • 问题内容: 我有一个JavaScript对象,例如 如何获取此对象中键的长度和列表? 问题答案: var obj = {

    • 我试图实现一个使用Spring Boot的客户机,它将从一个站点获取所有产品并将它们存储在数据库中。储存部分已经处理好了,但我很难找到所有产品的清单。当用Postman测试时,我可以用这样的身体得到响应:

    • 问题内容: 当存在时,是否有可能获得全部列表?是否为此准备了电话,还是我必须编写一个foreach循环,如: 问题答案: Java 8及更高版本: 如果需要确保得到结果,则必须将最后一行更改为: Java 7及以下版本: Java 8之前的标准集合API不支持这种转换。您必须编写一个循环(或将其包装在您自己的“地图”函数中),除非您使用一些更高级的集合API /扩展。 (您的Java代码段中的行正

    • 我正在使用数据库,其中我创建了,如,,等。现在创建一个示例程序获取所有对象在这里我发现一些是空的,我使用以下来获取所有过程: 从类型 = “P” 的 sys 对象中选择object_definition(object_id) 下面是我的示例代码: 公共静态空main(String[]args)抛出SQLException、IOException、ClassNotFoundException{ 有人

    • 我有两个问题: 如何使用spring RestTemplate映射JSON对象列表。 如何映射嵌套的JSON对象。 我正在尝试使用https://bitpay.com/api/rates,方法是按照http://spring.io/guides/gs/consource-rest/的教程学习。