Edge specific functionality

These are capabilities and features specific to Microsoft Edge browsers.

Microsoft Edge is implemented with Chromium, with the earliest supported version of v79. Similar to Chrome, the major version number of edgedriver must match the major version of the Edge browser.

Options

Capabilities common to all browsers are described on the Options page.

Capabilities unique to Chromium are documented at Google’s page for Capabilities & ChromeOptions

Starting an Edge session with basic defined options looks like this:

37
40
Show full example
package dev.selenium.browsers;

import dev.selenium.BaseTest;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.regex.Pattern;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chromium.ChromiumDriverLogLevel;
import org.openqa.selenium.chromium.ChromiumNetworkConditions;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.edge.EdgeDriverService;
import org.openqa.selenium.edge.EdgeOptions;
import org.openqa.selenium.logging.*;
import org.openqa.selenium.remote.service.DriverFinder;



public class EdgeTest extends BaseTest {
  @AfterEach
  public void clearProperties() {
    System.clearProperty(EdgeDriverService.EDGE_DRIVER_LOG_PROPERTY);
    System.clearProperty(EdgeDriverService.EDGE_DRIVER_LOG_LEVEL_PROPERTY);
  }

  @Test
  public void basicOptions() {
    EdgeOptions options = getDefaultEdgeOptions();
    driver = new EdgeDriver(options);
  }

  @Test
  public void arguments() {
    EdgeOptions options = getDefaultEdgeOptions();

    options.addArguments("--start-maximized");

    driver = new EdgeDriver(options);
  }

  @Test
  public void setBrowserLocation() {
    EdgeOptions options = getDefaultEdgeOptions();

    options.setBinary(getEdgeLocation());

    driver = new EdgeDriver(options);
  }

  @Test
  public void extensionOptions() {
    EdgeOptions options = getDefaultEdgeOptions();
    Path path = Paths.get("src/test/resources/extensions/webextensions-selenium-example.crx");
    File extensionFilePath = new File(path.toUri());

    options.addExtensions(extensionFilePath);

    driver = new EdgeDriver(options);
    driver.get("https://www.selenium.dev/selenium/web/blank.html");
    WebElement injected = driver.findElement(By.id("webextensions-selenium-example"));
    Assertions.assertEquals(
        "Content injected by webextensions-selenium-example", injected.getText());
  }

  @Test
  public void excludeSwitches() {
    EdgeOptions options = getDefaultEdgeOptions();

    options.setExperimentalOption("excludeSwitches", List.of("disable-popup-blocking"));

    driver = new EdgeDriver(options);
  }

  @Test
  public void loggingPreferences() {
    EdgeOptions options = getDefaultEdgeOptions();
    LoggingPreferences logPrefs = new LoggingPreferences();
    logPrefs.enable(LogType.PERFORMANCE, Level.ALL);
    options.setCapability(EdgeOptions.LOGGING_PREFS, logPrefs);

    driver = new EdgeDriver(options);
    driver.get("https://www.selenium.dev");

    LogEntries logEntries = driver.manage().logs().get(LogType.PERFORMANCE);
    Assertions.assertFalse(logEntries.getAll().isEmpty());
  }

  @Test
  public void logsToFile() throws IOException {
    File logLocation = getTempFile("logsToFile", ".log");
    EdgeDriverService service = new EdgeDriverService.Builder().withLogFile(logLocation).build();

    driver = new EdgeDriver(service);

    String fileContent = new String(Files.readAllBytes(logLocation.toPath()));
    Assertions.assertTrue(fileContent.contains("Starting Microsoft Edge WebDriver"));
  }

  @Test
  public void logsToConsole() throws IOException {
    File logLocation = getTempFile("logsToConsole", ".log");
    System.setOut(new PrintStream(logLocation));

    EdgeDriverService service = new EdgeDriverService.Builder().withLogOutput(System.out).build();

    driver = new EdgeDriver(service);

    String fileContent = new String(Files.readAllBytes(logLocation.toPath()));
    Assertions.assertTrue(fileContent.contains("Starting Microsoft Edge WebDriver"));
  }

  @Test
  public void logsWithLevel() throws IOException {
    File logLocation = getTempFile("logsWithLevel", ".log");
    System.setProperty(EdgeDriverService.EDGE_DRIVER_LOG_PROPERTY, logLocation.getAbsolutePath());

    EdgeDriverService service =
        new EdgeDriverService.Builder().withLoglevel(ChromiumDriverLogLevel.DEBUG).build();

    driver = new EdgeDriver(service);

    String fileContent = new String(Files.readAllBytes(logLocation.toPath()));
    Assertions.assertTrue(fileContent.contains("[DEBUG]:"));
  }

  @Test
  public void configureDriverLogs() throws IOException {
    File logLocation = getTempFile("configureDriverLogs", ".log");
    System.setProperty(EdgeDriverService.EDGE_DRIVER_LOG_PROPERTY, logLocation.getAbsolutePath());
    System.setProperty(
        EdgeDriverService.EDGE_DRIVER_LOG_LEVEL_PROPERTY, ChromiumDriverLogLevel.DEBUG.toString());

    EdgeDriverService service =
        new EdgeDriverService.Builder().withAppendLog(true).withReadableTimestamp(true).build();

    driver = new EdgeDriver(service);

    String fileContent = new String(Files.readAllBytes(logLocation.toPath()));
    Pattern pattern = Pattern.compile("\\[\\d\\d-\\d\\d-\\d\\d\\d\\d", Pattern.CASE_INSENSITIVE);
    Assertions.assertTrue(pattern.matcher(fileContent).find());
  }

  @Test
  public void disableBuildChecks() throws IOException {
    File logLocation = getTempFile("disableBuildChecks", ".log");
    System.setProperty(EdgeDriverService.EDGE_DRIVER_LOG_PROPERTY, logLocation.getAbsolutePath());
    System.setProperty(
        EdgeDriverService.EDGE_DRIVER_LOG_LEVEL_PROPERTY,
        ChromiumDriverLogLevel.WARNING.toString());

    EdgeDriverService service =
        new EdgeDriverService.Builder().withBuildCheckDisabled(true).build();

    driver = new EdgeDriver(service);

    String fileContent = new String(Files.readAllBytes(logLocation.toPath()));
    String expected =
        "[WARNING]: You are using an unsupported command-line switch: --disable-build-check";
    Assertions.assertTrue(fileContent.contains(expected));
  }

  private File getEdgeLocation() {
    EdgeOptions options = getDefaultEdgeOptions();
    options.setBrowserVersion("stable");
    DriverFinder finder = new DriverFinder(EdgeDriverService.createDefaultService(), options);
    return new File(finder.getBrowserPath());
  }

  @Test
  public void setPermissions() {
    EdgeDriver driver = new EdgeDriver();
    driver.get("https://www.selenium.dev");

    driver.setPermission("camera", "denied");

    // Verify the permission state is 'denied'
    String script = "return navigator.permissions.query({ name: 'camera' })" +
            "    .then(permissionStatus => permissionStatus.state);";
    String permissionState = (String) driver.executeScript(script);

    Assertions.assertEquals("denied", permissionState);
    driver.quit();
  }

  @Test
  public void setNetworkConditions() {
    driver = new EdgeDriver();

    ChromiumNetworkConditions networkConditions = new ChromiumNetworkConditions();
    networkConditions.setOffline(false);
    networkConditions.setLatency(java.time.Duration.ofMillis(20)); // 20 ms of latency
    networkConditions.setDownloadThroughput(2000 * 1024 / 8); // 2000 kbps
    networkConditions.setUploadThroughput(2000 * 1024 / 8);   // 2000 kbps

    ((EdgeDriver) driver).setNetworkConditions(networkConditions);

    driver.get("https://www.selenium.dev");

    // Assert the network conditions are set as expected
    ChromiumNetworkConditions actualConditions = ((EdgeDriver) driver).getNetworkConditions();
    Assertions.assertAll(
            () -> Assertions.assertEquals(networkConditions.getOffline(), actualConditions.getOffline()),
            () -> Assertions.assertEquals(networkConditions.getLatency(), actualConditions.getLatency()),
            () -> Assertions.assertEquals(networkConditions.getDownloadThroughput(), actualConditions.getDownloadThroughput()),
            () -> Assertions.assertEquals(networkConditions.getUploadThroughput(), actualConditions.getUploadThroughput())
    );
    ((EdgeDriver) driver).deleteNetworkConditions();
    driver.quit();
  }

  @Test
  public void castFeatures() {
    EdgeDriver driver = new EdgeDriver();

    List<Map<String, String>> sinks = driver.getCastSinks();
    if (!sinks.isEmpty()) {
      String sinkName = sinks.get(0).get("name");
      driver.startTabMirroring(sinkName);
      driver.stopCasting(sinkName);
    }

    driver.quit();
  }

  @Test
  public void getBrowserLogs() {
    EdgeDriver driver = new EdgeDriver();
    driver.get("https://www.selenium.dev/selenium/web/bidi/logEntryAdded.html");
    WebElement consoleLogButton = driver.findElement(By.id("consoleError"));
    consoleLogButton.click();

    LogEntries logs = driver.manage().logs().get(LogType.BROWSER);

    // Assert that at least one log contains the expected message
    boolean logFound = false;
    for (LogEntry log : logs) {
      if (log.getMessage().contains("I am console error")) {
        logFound = true;
        break;
      }
    }

    Assertions.assertTrue(logFound, "No matching log message found.");
    driver.quit();
  }
}
8
11
<details class="mt-3">
  <summary>Show full example</summary>
  <div class="pt-2">
    <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-py" data-lang="py"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">import</span> <span style="color:#000">os</span>

import re import subprocess import pytest from selenium import webdriver from selenium.webdriver.common.by import By def test_basic_options(): options = get_default_edge_options() driver = webdriver.Edge(options=options) driver.quit() def test_args(): options = get_default_edge_options() options.add_argument("–start-maximized") driver = webdriver.Edge(options=options) driver.get('http://selenium.dev') driver.quit() def test_set_browser_location(edge_bin): options = get_default_edge_options() options.binary_location = edge_bin driver = webdriver.Edge(options=options) driver.quit() def test_add_extension(): options = get_default_edge_options() extension_file_path = os.path.abspath("tests/extensions/webextensions-selenium-example.crx") options.add_extension(extension_file_path) driver = webdriver.Edge(options=options) driver.get("https://www.selenium.dev/selenium/web/blank.html") driver.quit() def test_keep_browser_open(): options = get_default_edge_options() options.add_experimental_option("detach", True) driver = webdriver.Edge(options=options) driver.get('http://selenium.dev') driver.quit() def test_exclude_switches(): options = get_default_edge_options() options.add_experimental_option('excludeSwitches', ['disable-popup-blocking']) driver = webdriver.Edge(options=options) driver.get('http://selenium.dev') driver.quit() def test_log_to_file(log_path): service = webdriver.EdgeService(log_output=log_path) driver = webdriver.Edge(service=service) with open(log_path, 'r') as fp: assert "Starting Microsoft Edge WebDriver" in fp.readline() driver.quit() def test_log_to_stdout(capfd): service = webdriver.EdgeService(log_output=subprocess.STDOUT) driver = webdriver.Edge(service=service) out, err = capfd.readouterr() assert "Starting Microsoft Edge WebDriver" in out driver.quit() def test_log_level(log_path): service = webdriver.EdgeService(service_args=['–log-level=DEBUG'], log_output=log_path) driver = webdriver.Edge(service=service) with open(log_path, 'r') as f: assert '[DEBUG]' in f.read() driver.quit() def test_log_features(log_path): service = webdriver.EdgeService(service_args=['–append-log', '–readable-timestamp'], log_output=log_path) driver = webdriver.Edge(service=service) with open(log_path, 'r') as f: assert re.match(r"[\d\d-\d\d-\d\d\d\d", f.read()) driver.quit() def test_build_checks(log_path): service = webdriver.EdgeService(service_args=['–disable-build-check'], log_output=log_path) driver = webdriver.Edge(service=service) expected = "[WARNING]: You are using an unsupported command-line switch: –disable-build-check" with open(log_path, 'r') as f: assert expected in f.read() driver.quit() def test_set_network_conditions(): driver = webdriver.Edge() network_conditions = { "offline": False, "latency": 20, # 20 ms of latency "download_throughput": 2000 1024 / 8, # 2000 kbps "upload_throughput": 2000 1024 / 8, # 2000 kbps } driver.set_network_conditions(**network_conditions) driver.get("https://www.selenium.dev") # check whether the network conditions are set assert driver.get_network_conditions() == network_conditions driver.quit() def test_set_permissions(): driver = webdriver.Edge() driver.get('https://www.selenium.dev') driver.set_permissions('camera', 'denied') assert get_permission_state(driver, 'camera') == 'denied' driver.quit() def get_permission_state(driver, name): """Helper function to query the permission state.""" script = """ const callback = arguments[arguments.length - 1]; navigator.permissions.query({name: arguments[0]}).then(permissionStatus => { callback(permissionStatus.state); }); """ return driver.execute_async_script(script, name) def test_cast_features(): driver = webdriver.Edge() try: sinks = driver.get_sinks() if sinks: sink_name = sinks[0]['name'] driver.start_tab_mirroring(sink_name) driver.stop_casting(sink_name) else: pytest.skip("No available Cast sinks to test with.") finally: driver.quit() def test_get_browser_logs(): driver = webdriver.Edge() driver.get("https://www.selenium.dev/selenium/web/bidi/logEntryAdded.html") driver.find_element(By.ID, "consoleError").click() logs = driver.get_log("browser") # Assert that at least one log contains the expected message assert any("I am console error" in log['message'] for log in logs), "No matching log message found." driver.quit() def get_default_edge_options(): options = webdriver.EdgeOptions() options.add_argument("–no-sandbox") return options

<div class="text-end pb-2 mt-2">
  <a href="https://github.com/SeleniumHQ/seleniumhq.github.io/blob/display_full//examples/python/tests/browsers/test_edge.py#L9-L10" target="_blank">
    <i class="fas fa-external-link-alt pl-2"></i>
    <strong>View full example on GitHub</strong>
  </a>
</div>
29
32
Show full example
using System;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using OpenQA.Selenium.Edge;

namespace SeleniumDocs.Browsers
{
    [TestClass]
    public class EdgeTest
    {
        private EdgeDriver driver;
        private string _logLocation;

        [TestCleanup]
        public void Cleanup()
        {
            if (_logLocation != null && File.Exists(_logLocation))
            {
                File.Delete(_logLocation);
            }
            driver.Quit();
        }

        [TestMethod]
        public void BasicOptions()
        {
            var options = new EdgeOptions();
            driver = new EdgeDriver(options);
        }

        [TestMethod]
        public void Arguments()
        {
            var options = new EdgeOptions();

            options.AddArgument("--start-maximized");
    
            driver = new EdgeDriver(options);
        }

        [TestMethod]
        public void SetBrowserLocation()
        {
            var options = new EdgeOptions();

            options.BinaryLocation = GetEdgeLocation();
    
            driver = new EdgeDriver(options);
        }

        [TestMethod]
        public void InstallExtension()
        {
            var options = new EdgeOptions();
            var baseDir = AppDomain.CurrentDomain.BaseDirectory;
            var extensionFilePath = Path.Combine(baseDir, "../../../Extensions/webextensions-selenium-example.crx");

            options.AddExtension(extensionFilePath);

            driver = new EdgeDriver(options);

            driver.Url = "https://www.selenium.dev/selenium/web/blank.html";

            IWebElement injected = driver.FindElement(By.Id("webextensions-selenium-example"));
            Assert.AreEqual("Content injected by webextensions-selenium-example", injected.Text);
        }

        [TestMethod]
        public void ExcludeSwitch()
        {
            var options = new EdgeOptions();

            options.AddExcludedArgument("disable-popup-blocking");

            driver = new EdgeDriver(options);
        }

        [TestMethod]
        public void LogsToFile()
        {
            var service = EdgeDriverService.CreateDefaultService();

            service.LogPath = GetLogLocation();

            driver = new EdgeDriver(service);
            driver.Quit(); // Close the Service log file before reading
            var lines = File.ReadLines(GetLogLocation());
            Assert.IsNotNull(lines.FirstOrDefault(line => line.Contains("Starting Microsoft Edge WebDriver")));
        }

        [TestMethod]
        [Ignore("Not implemented")]
        public void LogsToConsole()
        {
            var stringWriter = new StringWriter();
            var originalOutput = Console.Out;
            Console.SetOut(stringWriter);

            var service = EdgeDriverService.CreateDefaultService();

            //service.LogToConsole = true;

            driver = new EdgeDriver(service);

            Assert.IsTrue(stringWriter.ToString().Contains("Starting Microsoft Edge WebDriver"));
            Console.SetOut(originalOutput);
            stringWriter.Dispose();
        }

        [TestMethod]
        [Ignore("Not implemented")]
        public void LogsLevel()
        {
            var service = EdgeDriverService.CreateDefaultService();
            service.LogPath = GetLogLocation();

            // service.LogLevel = ChromiumDriverLogLevel.Debug 

            driver = new EdgeDriver(service);

            driver.Quit(); // Close the Service log file before reading
            var lines = File.ReadLines(GetLogLocation());
            Assert.IsNotNull(lines.FirstOrDefault(line => line.Contains("[DEBUG]:")));
        }

        [TestMethod]
        [Ignore("Not implemented")]
        public void ConfigureDriverLogs()
        {
            var service = EdgeDriverService.CreateDefaultService();
            service.LogPath = GetLogLocation();
            service.EnableVerboseLogging = true;

            service.EnableAppendLog = true;
            // service.readableTimeStamp = true;

            driver = new EdgeDriver(service);

            driver.Quit(); // Close the Service log file before reading
            var lines = File.ReadLines(GetLogLocation());
            var regex = new Regex(@"\[\d\d-\d\d-\d\d\d\d");
            Assert.IsNotNull(lines.FirstOrDefault(line => regex.Matches("").Count > 0));
        }

        [TestMethod]
        public void DisableBuildCheck()
        {
            var service = EdgeDriverService.CreateDefaultService();
            service.LogPath = GetLogLocation();
            service.EnableVerboseLogging = true;

            service.DisableBuildCheck = true;

            driver = new EdgeDriver(service);
            driver.Quit(); // Close the Service log file before reading
            var expected = "[WARNING]: You are using an unsupported command-line switch: --disable-build-check";
            var lines = File.ReadLines(GetLogLocation());
            Assert.IsNotNull(lines.FirstOrDefault(line => line.Contains(expected)));
        }
        
        private string GetLogLocation()
        {
            if (_logLocation == null || !File.Exists(_logLocation))
            {
                _logLocation = Path.GetTempFileName();
            }

            return _logLocation;
        }

        private static string GetEdgeLocation()
        {
            var options = new EdgeOptions
            {
                BrowserVersion = "stable"
            };
            return new DriverFinder(options).GetBrowserPath();
        }
    }
}
9
12
Show full example
# frozen_string_literal: true

require 'spec_helper'

RSpec.describe 'Edge' do
  describe 'Options' do
    let(:edge_location) { driver_finder && ENV.fetch('EDGE_BIN', nil) }

    it 'basic options' do
      options = Selenium::WebDriver::Options.edge
      @driver = Selenium::WebDriver.for :edge, options: options
    end

    it 'add arguments' do
      options = Selenium::WebDriver::Options.edge

      options.args << '--start-maximized'

      @driver = Selenium::WebDriver.for :edge, options: options
    end

    it 'sets location of binary' do
      options = Selenium::WebDriver::Options.edge

      options.binary = edge_location

      @driver = Selenium::WebDriver.for :edge, options: options
    end

    it 'add extensions' do
      extension_file_path = File.expand_path('../spec_support/extensions/webextensions-selenium-example.crx', __dir__)
      options = Selenium::WebDriver::Options.edge

      options.add_extension(extension_file_path)

      @driver = Selenium::WebDriver.for :edge, options: options
      @driver.get('https://www.selenium.dev/selenium/web/blank.html')
      injected = @driver.find_element(:id, 'webextensions-selenium-example')
      expect(injected.text).to eq 'Content injected by webextensions-selenium-example'
    end

    it 'keeps browser open' do
      options = Selenium::WebDriver::Options.edge

      options.detach = true

      @driver = Selenium::WebDriver.for :edge, options: options
    end

    it 'excludes switches' do
      options = Selenium::WebDriver::Options.edge

      options.exclude_switches << 'disable-popup-blocking'

      @driver = Selenium::WebDriver.for :edge, options: options
    end
  end

  describe 'Service' do
    let(:file_name) { File.expand_path('msedgedriver.log') }

    after { FileUtils.rm_f(file_name) }

    it 'logs to file' do
      service = Selenium::WebDriver::Service.edge

      service.log = file_name

      @driver = Selenium::WebDriver.for :edge, service: service
      expect(File.readlines(file_name).first).to include('Starting Microsoft Edge WebDriver')
    end

    it 'logs to console' do
      service = Selenium::WebDriver::Service.edge

      service.log = $stdout

      expect {
        @driver = Selenium::WebDriver.for :edge, service: service
      }.to output(/Starting Microsoft Edge WebDriver/).to_stdout_from_any_process
    end

    it 'sets log level' do
      service = Selenium::WebDriver::Service.edge
      service.log = file_name

      service.args << '--log-level=DEBUG'

      @driver = Selenium::WebDriver.for :edge, service: service
      expect(File.readlines(file_name).grep(/\[DEBUG\]:/).any?).to eq true
    end

    it 'sets log features' do
      args = ["--log-path=#{file_name}", '--verbose']
      service = Selenium::WebDriver::Service.edge(args: args)

      service.args << '--append-log'
      service.args << '--readable-timestamp'

      @driver = Selenium::WebDriver.for :edge, service: service

      expect(File.readlines(file_name).grep(/\[\d\d-\d\d-\d\d\d\d/).any?).to eq true
    end

    it 'disables build checks' do
      service = Selenium::WebDriver::Service.edge log: file_name, args: ['--verbose']

      service.args << '--disable-build-check'

      @driver = Selenium::WebDriver.for :edge, service: service
      warning = /\[WARNING\]: You are using an unsupported command-line switch: --disable-build-check/
      expect(File.readlines(file_name).grep(warning).any?).to eq true
    end
  end

  describe 'Special Features' do
    it 'casts' do
      @driver = Selenium::WebDriver.for :edge
      sinks = @driver.cast_sinks
      unless sinks.empty?
        device_name = sinks.first['name']
        @driver.start_cast_tab_mirroring(device_name)
        expect { @driver.stop_casting(device_name) }.not_to raise_exception
      end
    end

    it 'gets and sets network conditions' do
      @driver = Selenium::WebDriver.for :edge
      @driver.network_conditions = {offline: false, latency: 100, throughput: 200}
      expect(@driver.network_conditions).to eq(
        'offline' => false,
        'latency' => 100,
        'download_throughput' => 200,
        'upload_throughput' => 200)
    end

    it 'gets the browser logs' do
      @driver = Selenium::WebDriver.for :edge
      @driver.navigate.to 'https://www.selenium.dev/selenium/web/'
      sleep 1
      logs = @driver.logs.get(:browser)

      expect(logs.first.message).to include 'Failed to load resource'
    end

    it 'sets permissions' do
      @driver = Selenium::WebDriver.for :edge
      @driver.navigate.to 'https://www.selenium.dev/selenium/web/'
      @driver.add_permission('camera', 'denied')
      @driver.add_permissions('clipboard-read' => 'denied', 'clipboard-write' => 'prompt')
      expect(permission('camera')).to eq('denied')
      expect(permission('clipboard-read')).to eq('denied')
      expect(permission('clipboard-write')).to eq('prompt')
    end
  end

  def driver_finder
    options = Selenium::WebDriver::Options.edge(browser_version: 'stable')
    service = Selenium::WebDriver::Service.edge
    finder = Selenium::WebDriver::DriverFinder.new(options, service)
    ENV['EDGEDRIVER_BIN'] = finder.driver_path
    ENV['EDGE_BIN'] = finder.browser_path
  end

  def permission(name)
    @driver.execute_async_script('callback = arguments[arguments.length - 1];' \
                                   'callback(navigator.permissions.query({name: arguments[0]}));', name)['state']
  end
end
10
16
Show full example
const {Browser, Builder} = require('selenium-webdriver');
const edge = require('selenium-webdriver/edge');


describe('Open Edge', function () {
  let driver;



  before(async function () {
    let options = new edge.Options();
    driver = new Builder()
      .forBrowser(Browser.EDGE)
      .setEdgeOptions(options)
      .build();
  });

  after(async () => await driver.quit());

  it('Basic Edge test', async function () {
    await driver.get('https://www.selenium.dev/selenium/web/blank.html');
  });
});