2012年1月24日火曜日

chromedriver.exeのプロセス

webdriverでchromeのテストを実行する際、chromedriver.exeが必要になる。
問題は終了時に

WebDriver.close();
とするだけでは chromedriver.exeのプロセスが終了されず、残ってしまう。
きちんと
WebDriver.quit();
も実行しましょう。(てかどのサイトにもそう書いてる、、、)

2012年1月10日火曜日

ChromeOptions

selenium2.16で追加された新しい機能(クラス)にChromeOptionsというものがある。

FireFoxDriverと同じようにアドオンのパスを指定して同時起動出来るようになる。

例)

 ChromeOptions options = new ChromeOptions()
 options.addExtensions(new File("/path/to/extension.crx"))
 options.setBinary(new File("/path/to/chrome"));

 // For use with ChromeDriver:
 ChromeDriver driver = new ChromeDriver(options);
 
以前話に上がったScriptCoverと同時起動して、jsのカバレッジを調べたり出来るようになる。
 

2012年1月4日水曜日

idがついていないコンポーネントのエレメントを指定する方法

driver.findElements(new ByChained(By.id("hoge"), By.Name("hogehoge")));
 
上のようにすると要素をチェーンできる。これでidのついていない、特定できない要素をちょっと特定して取得できる。
面白かったのはソースの中身
public class ByChained extends By {

  private By[] bys;

  public ByChained(By... bys) {
    this.bys = bys;
  }
}
こう書けば可変引数を渡せるのね。

for (By by : bys) {
stringBuilder.append((first ? "" : ",")).append(by);
   first = false;
}
こうすれば配列をfor文にそのまま使える。
しらなんだ。
人のソースって勉強になりますね。