【问题标题】:Selenium and Postman integration or other approach?Selenium 和 Postman 集成还是其他方法?
【发布时间】:2018-12-20 14:55:45
【问题描述】:

我正在寻找一般的想法、方法和合适的工具。 我计划开始测试管理面板。它的稳定部分可以通过 selenium-python 脚本进行测试。但是,在测试面板中的某些功能之前,我需要通过 Postman 将一批数据发送到 API 端点,挑战就开始了。

您知道 Postman 是一个原生应用程序,因此它不提供 selenium 驱动程序可以访问的 url(浏览器扩展已被弃用。

所以问题是。是否可以在一个 selenium 脚本中集成和自动化该过程?

是否可以使用 Postman 或有其他工具可以向端点发送请求并可以与 selenium 脚本集成?

还有一件事。最好的方法是:发送请求并在该操作后几秒钟开始对通过请求传递给面板的数据进行硒测试。我需要完全自动化该过程并设置那些没有明显时间延迟的操作。

对可能的解决方案感到好奇。

【问题讨论】:

    标签: api selenium postman


    【解决方案1】:

    出于 API 自动化目的,请使用放心。它易于学习,实施。您将能够完全自动化 api(JSON 和 XML)。所有验证将在几秒钟内完成。如果您集成 RestAssured 和 Selenium,您将能够使用 API 和前端验证数据。 如果您需要了解更多信息,请告诉我。

    示例 GET 代码:-

    RestAssured.baseURI="base url Eg :- https://www.google.com/";given().header("Accept","application/json").header("Authorization","Value").when().get("rest of the part of the url").then().assertThat().statusCode(200).and().contentType(ContentType.JSON).and().body("name[0]",equalTo("Location"));
    

    示例 POST 代码:-

    RestAssured.baseURI="https://www.google.com/";

            Response res=given().header("Authorization","Value").header("cache-control","no-cache").header("content-type","application/json").body("{"+"\"format\":[\"live-blog\",\"video-story\",\"Photo Gallery\",\"photo-gallery\",\"blank\",\"breaking-news\",\"photo-story\"],"+"\"language\": \"english\""+"}").when().post("Rest of the url`enter code here`").
    

    then().assertThat().statusCode(200).and().contentType(ContentType.JSON).extract().response();

            String res_string= res.asString();
            System.out.println(res_string);
    
            JsonPath jpath = new JsonPath(res_string);
    
            String articleid = jpath.get("[0].articleId");
                System.out.println(articleid);
    

    你可以在网上找到所有的jar文件。 为格式道歉。

    【讨论】:

    • 即使 OP 不需要更多信息,您也可以添加一些代码示例和/或一些链接来找到有关它的更多信息。它可能对未来的读者有用
    • @ann 放​​心使用,您将能够测试所有类型的 API(GET、POST、PUT 和 DELETE)。因此,正如您所要求的,您可以使用它将数据快速输入某个系统。您只需要有一个示例请求和您想要访问的 url。您将能够非常轻松地实现自动化。
    • @AndreiSuvorkov 当然。我添加了一个示例获取请求。你会在网上找到jar文件。如果对此有任何问题,请告诉我。 RestAssured.baseURI="base url 例如:-google.com";给定()。标头(“接受”,“应用程序/json”)。标头(“授权”,“值”)。什么时候()。 get("url 的其余部分"). then().assertThat().statusCode(200).and().contentType(ContentType.JSON).and()。 body("name[0]",equalTo("Location"));
    • 在我的回答中添加了它:-)
    【解决方案2】:

    Selenium 的目的不是测试您的应用程序的 API,而是测试 Web。
    我建议正如有人在这里评论的那样,使用带有 Rest-Assured 的 Java,它非常可靠、易于学习且速度快。
    如果您需要任何特定于您的 Web 测试的东西,作为要求或其他东西,您可以使用 Java 的 API 调用。

    【讨论】:

    • 其实我不需要测试API,只需要按请求传递数据,测试面板的所有功能。 Panel 有一个 url,可以通过 selenium 进行测试。所以让我们想象一个 selenium-python 脚本。它从请求开始(向面板发送数据),数据被发送,几秒钟后网络驱动程序转到面板 url 并开始测试取决于请求发送的数据的功能。有可能还是我需要单独的步骤?例如做一些时间同步? 10:30 通过 Postman 发送请求,10:31 开始 selenium 测试。
    【解决方案3】:

    由于您已经在使用 Python,您可以轻松地使用“requests”python 包来发送您的 API 请求并根据需要解析响应。这将使您可以轻松地将其集成到您的整体脚本中,发送 api 请求,确保必要的响应,然后启动 selenium 步骤。

    【讨论】:

    • 测试脚本是 Python,但 API 是 PHP。是否仍然可以通过docs.python-requests.org/en/master 发送请求?
    • 当然!您只需要以服务器期望的形式提交请求,这就是您使用 Postman 所做的事情
    • 感谢大家的反馈。对我来说,与 python 请求包的集成效果很好。这正是我试图实现的目标。
    猜你喜欢
    • 2022-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-20
    • 2023-03-08
    • 2018-05-12
    • 2018-07-29
    相关资源
    最近更新 更多