扩展 Webdriver 或 Selenium2 的 click() 方法来计算网页响应



我计划使用以下代码计算页面响应时间,但这会导致冗余。

  long start;
  start = System.currentTimeMillis();  
  driver.get(url); or click();
  System.out.println (driver.getTitle() + " - " + (System.currentTimeMillis() - start) + " MilliSec"); 

我知道使用 Page 对象实现上述代码,需要帮助使用 Webdriver 接口扩展 click(),以便当我调用 click() 时会自动执行上面的代码。

正如我阅读了您的评论一样,还有一种可能性。构建你自己的类,它将实现WebElement接口。在这种情况下,您将不得不实现WebElement的所有方法,这可能不值得。但是如果你想采用这种方法,我会建议这样的东西:

public class MyWebElement implements WebElement{
  private WebElement element
  //... all the WebElement methods must be implemented
  //but I will show only the click:
  @Override
     public void click(){
     long start;
     start = System.currentTimeMillis();  
     element.click();
     System.out.println (driver.getTitle() + " - " + (System.currentTimeMillis() - start) + " MilliSec");
  }
}

稍后在代码中:

@Test
public void testSomething(){
  driver.get("http://foo.bar");
  MyWebElement elem = driver.find(By.id("baz"));
  elem.click();
}

再次:通过使用这种方法,您必须实现所有 WebElement 方法 - 即使是那些您永远不会在测试中使用的方法。在你的位置上,我会使用我在 mz 之前答案中暗示的方法。

我实现它的方式是我编写自己的Java类来表示页面。所以如果我想测试谷歌,我有一些看起来像这样的类:

public class GoogleUI{
   private WebElement searchButton;
   private WebDriver driver;
   public GoogleUI(){
     driver = new FirefoxDriver();
   }
  public void clickSearch(){
   long start;
   searchButton = driver.findElement(By.name("btnG"));
   start = System.currentTimeMillis();  
   searchButton.click();
   System.out.println (driver.getTitle() + " - " + (System.currentTimeMillis() - start) + " MilliSec"); 
  }
}

稍后在测试中:

@Test
public void testGoogleSearchButton(){
   GoogleUI google = new GoogleUI();
   google.clickSearch();
}

其中,clickSearch方法本身包装单击并打印时间。

这显然被简化到绝对最低限度,但我希望你能在你的测试中适应它

相关内容

  • 没有找到相关文章