Firefox特有の機能
Selenium 4 には Firefox 78 以降が必要です。 常に最新バージョンの geckodriver を使用することをお勧めします。
オプション
全ブラウザに共通のCapabilityについては、オプションページで説明しています。
Firefox に固有のCapabilityは、Mozilla のページの firefoxOptions にあります。
基本的な定義済みのオプションを使用して Firefox セッションを開始すると、以下のようになります。
Assertions.assertEquals("Content injected by webextensions-selenium-example", injected.getText());
}
driver = webdriver.Firefox(options=options)
driver.InstallAddOnFromFile(Path.GetFullPath(extensionFilePath));
@driver = Selenium::WebDriver.for :firefox, options: options
end
let options = new firefox.Options();
driver = await env.builder()
.setFirefoxOptions(options)
.build();
さまざまなCapabilityを備えた一般的な使用例をいくつか示します。
引数
args
パラメータは、ブラウザの起動時に使用するコマンドラインスイッチのリストです。
一般的に使用される引数には、 -headless
と "-profile"
、"/path/to/profile"
が含まれます。
オプションに引数を追加します。
driver.uninstallExtension(id);
public void UnInstallAddon()
driver.get 'https://www.selenium.dev/selenium/web/blank.html'
let driver = await env.builder()
.setFirefoxOptions(options.addArguments('--headless'))
.build();
指定したロケーションでブラウザを起動する
binary
パラメーターは、使用するブラウザーの別のロケーションのパスを取ります。
たとえば、このパラメーターを使用すると、geckodriver を使用して、製品版とFirefox Nightlyの両方がコンピューターに存在する場合、
製品版の代わりに Firefox Nightly を駆動できます 。
オプションにブラウザーのロケーションを追加します。
driver.installExtension(path, true);
Assert.AreEqual(driver.FindElements(By.Id("webextensions-selenium-example")).Count, 0);
driver.uninstall_addon(extension_id)
プロファイル
Firefoxプロファイルを操作するにはいくつかの方法があります。
FirefoxProfile profile = new FirefoxProfile();
FirefoxOptions options = new FirefoxOptions();
options.setProfile(profile);
driver = new RemoteWebDriver(options);
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.firefox.firefox_profile import FirefoxProfile
options=Options()
firefox_profile = FirefoxProfile()
firefox_profile.set_preference("javascript.enabled", False)
options.profile = firefox_profile
var options = new FirefoxOptions();
var profile = new FirefoxProfile();
options.Profile = profile;
var driver = new RemoteWebDriver(options);
const { Builder } = require("selenium-webdriver");
const firefox = require('selenium-webdriver/firefox');
const options = new firefox.Options();
let profile = '/path to custom profile';
options.setProfile(profile);
const driver = new Builder()
.forBrowser('firefox')
.setFirefoxOptions(options)
.build();
val options = FirefoxOptions()
options.profile = FirefoxProfile()
driver = RemoteWebDriver(options)
サービス
すべてのブラウザに共通するサービス設定は、Service pageに記載されています。
ログ出力
ドライバーログを取得することは、さまざまな問題のデバッグに役立ちます。サービスクラスを使用すると、ログの保存先を指定できます。ログ出力は、ユーザーがどこかに指定しない限り無視されます。
ファイル出力
特定のファイルにログ出力を保存するには:
System.setOut(new PrintStream(getLogLocation()));
注: Java では、システムプロパティによってファイル出力を設定することもできます。
プロパティキー:GeckoDriverService.GECKO_DRIVER_LOG_PROPERTY
プロパティ値: ログファイルへのパスを表す文字列
@driver = Selenium::WebDriver.for :firefox, service: service
コンソール出力
ログ出力をコンソールに表示するには、以下のようにします:
System.setProperty(GeckoDriverService.GECKO_DRIVER_LOG_PROPERTY,
getLogLocation().getAbsolutePath());
注意: Javaは、システムプロパティを使用してコンソール出力を設定することもできます;
プロパティキー: GeckoDriverService.GECKO_DRIVER_LOG_PROPERTY
プロパティ値: DriverService.LOG_STDOUT
または DriverService.LOG_STDERR
@driver = Selenium::WebDriver.for :firefox, service: service
ログレベル
利用可能なログレベルは7つあります: fatal
, error
, warn
, info
, config
, debug
, trace
。
ロギングが指定されている場合、デフォルトのレベルは info
になります。
-v
iは -log debug
と同等であり、-vv
は log trace
と同等です。
したがって、この例は一般的にログレベルを設定するためのものです:
public void stopsTruncatingLogs() throws IOException {
System.setProperty(GeckoDriverService.GECKO_DRIVER_LOG_PROPERTY,
注意: Javaは、システムプロパティによってログレベルの設定も可能です:
プロパティキー: GeckoDriverService.GECKO_DRIVER_LOG_LEVEL_PROPERTY
プロパティ値:FirefoxDriverLogLevel
列挙型の文字列表現
トランケートログ
ドライバーは、大きなバイナリの文字列表現を含む、送信されたすべてのものをログに記録します。そのため、Firefoxではデフォルトで行が切り捨てられます。切り捨てを無効にするには:
@Test
public void setProfileLocation() throws IOException {
注意: Javaでは、システムプロパティによってログレベルを設定することもできます。
プロパティキー: GeckoDriverService.GECKO_DRIVER_LOG_NO_TRUNCATE
プロパティ値: "true"
または "false"
プロファイルルート
プロファイルのデフォルトディレクトリは、システムの一時ディレクトリです。そのディレクトリにアクセスできない場合や、特定の場所にプロファイルを作成したい場合は、プロファイルルートディレクトリを変更できます:
@Test
public void installAddon() {
注意: Javaでは、システムプロパティを使用してログレベルを設定することもできます:
プロパティキー: GeckoDriverService.GECKO_DRIVER_PROFILE_ROOT
プロパティ値: プロファイルルートディレクトリへのパスを表す文字列
特別な機能
アドオン
Chromeとは異なり、Firefoxの拡張機能はCapabilityの一部として追加されるのではなく、ドライバーの起動後に作成されます。
Chromeとは異なり、Firefoxの拡張機能はこの問題に記載されているように、機能の一部として追加されるのではなく、ドライバーの起動後に作成されます。
T以下の例はローカルWebDriver用です。リモートWebDriverについては、Remote WebDriverページを参照してください。
インストール
Mozilla Add-Onsページ から取得する署名付きxpiファイル
const xpiPath = path.resolve('./test/resources/extensions/selenium-example.xpi')
let driver = await env.builder().build();
let id = await driver.installAddon(xpiPath);
アンインストール
アドオンをアンインストールするには、そのIDを知る必要があります。 IDはアドオンインストール時の戻り値から取得できます。
await driver.uninstallAddon(id);
署名なしのインストール
未完成または未公開の拡張機能を使用する場合、署名されていない可能性があります。 そのため、“一時的なもの” としてのみインストールできます。 これは、zipファイルまたはディレクトリを渡すことで実行できます。ディレクトリの例を次に示します。
const xpiPath = path.resolve('./test/resources/extensions/selenium-example')
let driver = await env.builder().build();
let id = await driver.installAddon(xpiPath, true);
ページ全体のスクリーンショット
以下の例はローカルWebDriver用です。リモートWebDriverについては、Remote WebDriverページを参照してください。
コンテキスト
以下の例はローカルWebDriver用です。リモートWebDriverについては、Remote WebDriverページを参照してください。