連続で失礼します。
個人的に興味もありましたので、ChromeWebDriverで挑戦してみましたところ、以下の方法でうまくいきました。
環境は以下のとおりです。(その他は前の回答と同じ)
- ChromeDriver 2.16
- Chrome 43.0.2357.130 m (64-bit)
そもそもで、Codeceptionが依存しているphp-webdriverがmobileEmulationに対応していないようですので、そこを考慮する必要がありました。
まず、php-webdriverに含まれているChromeOptionsを拡張したクラスを用意します。
lang
1<?php
2class ExtendedChromeOptions extends \ChromeOptions
3{
4 protected $mobileEmulation;
5
6 public function setMobileEmulation($mobileEmulation)
7 {
8 $this->mobileEmulation = $mobileEmulation;
9 }
10
11 public function toArray()
12 {
13 $options = parent::toArray();
14 $options['mobileEmulation'] = $this->mobileEmulation;
15 return $options;
16 }
17}
次に、先ほど回答させていただいたAcceptanceHelperのloadFirefoxProfileをChromeに対応します。
lang
1<?php
2namespace Codeception\Module;
3
4class AcceptanceHelper extends \Codeception\Module\WebDriver
5{
6 protected function loadFirefoxProfile()
7 {
8 if (isset($this->config['capabilities']['userAgent'])) {
9 if ($this->config['browser'] === 'firefox') {
10 $profile = new \FirefoxProfile();
11 $profile->setPreference(
12 'general.useragent.override',
13 $this->config['capabilities']['userAgent']
14 );
15 $this->capabilities['firefox_profile'] = $profile->encode();
16 } else if ($this->config['browser'] === 'chrome') {
17 $mobileEmulation = [
18 'userAgent' => $this->config['capabilities']['userAgent']
19 ];
20 $options = new \ExtendedChromeOptions();
21 $options->setMobileEmulation($mobileEmulation);
22 $this->capabilities[\ChromeOptions::CAPABILITY] = $options->toArray();
23 }
24 } else {
25 parent::loadFirefoxProfile();
26 }
27 }
28}
(もはや、処理内容が「loadFirefoxProfile」という命名とはずれてますが、適した場所がここしかないので。。。。)
最後に、acceptance.suite.ymlはbrowserを firefox -> chrome に変更するのみですので、割愛します。
試してはいませんが、deviceMetricsなんかも設定できそうな雰囲気が致します。
以上です。参考になさってください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/07/02 12:12
2015/07/03 00:12