我想知道执行每个测试步骤需要多长时间

时间:2014-07-31 17:43:11

标签: selenium selenium-webdriver testunit

下面的测试运行得很好......我只是想知道每个测试步骤需要多长时间。该测试最初是从selenium firefox插件导出到ruby。

我的计划是再添加一个额外的步骤来验证平均滑槽时间'页面已完全加载。而且我真的很想知道从测试点击的那一刻开始需要多长时间"平均滑槽时间"直到页面完全加载。

 require "json"
    require "selenium-webdriver"
    gem "test-unit"
    require "test/unit"

    class LoginToChute< Test::Unit::TestCase

    def setup
        @driver = Selenium::WebDriver.for :chrome
        @base_url = "https://devdb5.esosuite.net/EsoSuiteHotfixDaily/"
        @accept_next_alert = true
        @driver.manage.timeouts.implicit_wait = 30
        @verification_errors = []
      end

      def teardown
        assert_equal [], @verification_errors
        @driver.quit
      end



      def test_login_to_chute
        @driver.get(@base_url)
        assert_equal "ESO Solutions :: NextGen", @driver.title
        @driver.find_element(:id, "UserName").clear
        @driver.find_element(:id, "UserName").send_keys "jenna"
        @driver.find_element(:id, "Password").clear
        @driver.find_element(:id, "Password").send_keys ".alice77."
        @driver.find_element(:id, "AgencyLoginId").clear
        @driver.find_element(:id, "AgencyLoginId").send_keys "wonderland"
        @driver.find_element(:id, "btnLogin").click
        @driver.find_element(:css, "img[alt=\"analytics\"]").click
        @driver.find_element(:xpath, "//div[text() = 'ePCR Reports']").click
        @driver.find_element(:xpath, "//div[text() = 'Operational Reports']").click
        @driver.find_element(:xpath, "//div[text() = 'Average Chute Time']").click



      end

      def element_present?(how, what)
        @driver.find_element(how, what)
        true
      rescue Selenium::WebDriver::Error::NoSuchElementError
        false
      end

      def alert_present?()
        @driver.switch_to.alert
        true
      rescue Selenium::WebDriver::Error::NoAlertPresentError
        false
      end

      def verify(&blk)
        yield
      rescue Test::Unit::AssertionFailedError => ex
        @verification_errors << ex
      end

      def close_alert_and_get_its_text(how, what)
        alert = @driver.switch_to().alert()
        alert_text = alert.text
        if (@accept_next_alert) then
          alert.accept()
        else
          alert.dismiss()
        end
        alert_text
      ensure
        @accept_next_alert = true
      end
    end

1 个答案:

答案 0 :(得分:0)

您应该使用google dev工具等客户端分析进行分析。确定页面上最后一件实际加载的内容。这当然会给你一个很好的性能分析,但是采用自动化方法......

然后获取系统时间戳并将其保存为测试@driver.find_element(:xpath, "//div[text() = 'Average Chute Time']").click行之前的变量。在测试中执行所有代码,并在执行完成后等待您标识为最后加载的元素。在等待之后立即获取时间戳并获取两个时间戳之间的差异。

当然,这种方法适用于您想要测量的任何持续时间,只需要相应地组织测试,以便您测量要测量的确切步骤执行。等待特定元素对于确保客户端从用户角度完成呈现所有内容非常重要。通常,性能技巧是渲染页面和控件,然后通过javascript修改DOM,以便在所有组件和控件内容实际上对用户可操作之前,页面出现在那里。因此,请注意您实际测量的内容,而不仅仅是测量原始页面负载。

对您的特定负载重复此操作,并为每个负载分别采取措施。我还实现了一个包装器,为每一步提供时间。然后有单独的功能,我可以启动和停止计时器的步骤组。选择权取决于您特别想要捕获的数字。