【问题标题】:Optimizing Selenium tests by bypassing UI通过绕过 UI 优化 Selenium 测试
【发布时间】:2016-03-25 11:38:50
【问题描述】:

对于那些需要在测试之前和(或)之后执行的操作,有没有办法绕过 UI?是否可以向同一个测试会话发送简单的 GET 或 POST 请求,而不是在测试中编写脚本?

例如,我想编写一个测试来检查是否可以删除记录。为此,首先我需要创建记录。通过 UI 似乎不是一个好的选择,因为它不是测试本身的一部分。

【问题讨论】:

    标签: selenium optimization regression-testing


    【解决方案1】:

    这实际上取决于被测应用程序。您可能不想对数据库进行 SQL 调用来创建这些记录,除非您真的知道自己在做什么。即便如此,当记录发生变化时,它也会使您的测试自动化中断。

    也许您正在测试的应用程序提供了一个 API,可让您创建目标记录。这将是理想的,允许您发出 API 请求,然后您在 UI 中所要做的就是导航到“用户”将其删除的位置。

    【讨论】:

      【解决方案2】:

      您几乎可以通过在页面中执行一些 Javascript 来完成所有操作。 下面是一个使用 Javascript 调用发送 HTTP 请求的示例:

      from selenium import webdriver
      
      driver = webdriver.Firefox()
      driver.get("https://www.google.com")
      
      driver.execute_script("""
        var r = new XMLHttpRequest();
        r.open('POST', '/search', 0);
        r.setRequestHeader('Content-type','application/x-www-form-urlencoded');
        r.send('q=bill+material&output=xml&client=test&site=operations&access=p');
        return r.responseText;
        """)
      

      虽然以这种方式设置测试可能很诱人,但我不建议这样做,因为它会为 UI 创建新的依赖项,增加复杂性并因此增加测试的维护成本。

      【讨论】:

        猜你喜欢
        • 2020-04-03
        • 2018-04-29
        • 1970-01-01
        • 2012-02-03
        • 2015-05-14
        • 1970-01-01
        • 2022-01-11
        • 2013-04-02
        • 2018-11-01
        相关资源
        最近更新 更多