1

次のコードを使用してページの応答時間を計算することを計画していますが、これにより冗長性が発生しています。

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

Pageオブジェクトを使用して上記のコードを実装することを認識しています。Webdriverインターフェースを使用してclick()を拡張する際に支援が必要です。これにより、click()を呼び出すと、上記のコードが自動的に実行されます。

4

2 に答える 2

2

あなたのコメントを読んだように、もう1つの可能性もあります。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の前の回答で示唆したように、私はアプローチを使用します。

于 2012-06-29T13:27:06.710 に答える
1

私がそれを実装する方法は、ページを表す独自の Java クラスを作成することです。したがって、Google をテストする場合は、次のようなクラスがあります。

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メソッド自体がクリックをラップして時間を出力する場所。

これは明らかに最小限に抑えられていますが、テストに適用できることを願っています

于 2012-06-29T08:12:54.943 に答える