Estoy tratando de ejecutar una prueba de Selenium con Java y Edge Dev (basado en Chromium). He descargado el controlador binario (msedgedriver.exe, 64 bits en mi caso) de aquí.

La versión de mi Edge Dev instalada en Windows 10 es 76.0.152.0 (Official build dev 64-bit):

enter image description here

Entonces, tengo la siguiente prueba JUnit 4:

import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.MatcherAssert.assertThat;

import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.edge.EdgeDriver;

public class EdgeDevTest {

    private WebDriver driver;

    @BeforeClass
    public static void setupClass() {
        System.setProperty("webdriver.edge.driver",
                "C:\\Users\\boni\\Downloads\\msedgedriver.exe");
    }

    @Before
    public void setupTest() {
        driver = new EdgeDriver();
    }

    @After
    public void teardown() {
        if (driver != null) {
            driver.quit();
        }
    }

    @Test
    public void test() {
        driver.get("https://bonigarcia.github.io/selenium-jupiter/");
        assertThat(driver.getTitle(),
                containsString("JUnit 5 extension for Selenium"));
    }

}

... que falla de la siguiente manera:

org.openqa.selenium.SessionNotCreatedException: session not created: No matching capabilities found
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'LAPTOP-T9O4060I', ip: '192.168.99.1', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_111'
Driver info: driver.version: EdgeDriver
remote stacktrace: Backtrace:
    Ordinal0 [0x00007FF7894D9442+1741890]
    Ordinal0 [0x00007FF78943D692+1103506]
    Ordinal0 [0x00007FF7893C828F+623247]
    Ordinal0 [0x00007FF78936932A+234282]
    Ordinal0 [0x00007FF7893699A3+235939]
    Ordinal0 [0x00007FF78936794F+227663]
    Ordinal0 [0x00007FF789349BC7+105415]
    Ordinal0 [0x00007FF78934B2CE+111310]
    GetHandleVerifier [0x00007FF78966D249+1471113]
    GetHandleVerifier [0x00007FF78959C525+615781]
    GetHandleVerifier [0x00007FF78959C2C1+615169]
    Ordinal0 [0x00007FF7894E91CC+1806796]
    GetHandleVerifier [0x00007FF78959CC56+617622]
    Ordinal0 [0x00007FF78945748E+1209486]
    Ordinal0 [0x00007FF78946483C+1263676]
    Ordinal0 [0x00007FF7894636BD+1259197]
    BaseThreadInitThunk [0x00007FF86D337974+20]
    RtlUserThreadStart [0x00007FF86D7FA271+33]

¿Alguna idea?

6
Boni García 10 may. 2019 a las 14:08

7 respuestas

La mejor respuesta

Lo tengo funcionando. Mi configuración es un poco diferente a la suya porque estoy usando una cuadrícula, pero debería ser bastante similar.

Para mí, cuando solicito un controlador de la red utilizo las capacidades de Chrome:

m_capability = DesiredCapabilities.chrome();
m_capability.setCapability( "browserName", "chrome" );

Entonces, en su caso, supongo que querrá esto en su lugar:

driver = new ChromeDriver();

Al iniciar un nodo, especifico el controlador de Chrome para que apunte al controlador de borde (lo tengo en la RUTA, así que no necesito una ruta absoluta)

java -Dwebdriver.chrome.driver=msedgedriver.exe ...

Entonces, en su caso, querrá esto en su lugar:

System.setProperty("webdriver.chrome.driver",
        "C:\\Users\\boni\\Downloads\\msedgedriver.exe");

Otra cosa para recordar es tener la ubicación del ejecutable de Edge (ver más abajo) en su RUTA

Para Edge Dev querrás agregar:

C:\Program Files (x86)\Microsoft\Edge Dev\Application\

O si estás usando Canary, probablemente sea:

C:\Users\boni\AppData\Local\Microsoft\Edge SxS\Application\
3
Jools 15 may. 2019 a las 11:18

Solo para cerrar este problema, basado en la respuesta de Jools, he actualizado mi prueba (usando la última versión de WebDriverManager) y ahora está funcionando:

import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.MatcherAssert.assertThat;

import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.edge.EdgeOptions;

import io.github.bonigarcia.wdm.WebDriverManager;

public class EdgeDevTest {

    private WebDriver driver;

    @BeforeClass
    public static void setupClass() {
        WebDriverManager.edgedriver().setup();
    }

    @Before
    public void setupTest() {
        ChromeOptions chromeOptions = new ChromeOptions();
        chromeOptions.setBinary(
                "C:\\Program Files (x86)\\Microsoft\\Edge Dev\\Application\\msedge.exe");
        EdgeOptions edgeOptions = new EdgeOptions().merge(chromeOptions);
        driver = new EdgeDriver(edgeOptions);
    }

    @After
    public void teardown() {
        if (driver != null) {
            driver.quit();
        }
    }

    @Test
    public void test() {
        driver.get("https://bonigarcia.github.io/selenium-jupiter/");
        assertThat(driver.getTitle(),
                containsString("JUnit 5 extension for Selenium"));
    }

}
2
Boni García 17 may. 2019 a las 09:35

EdgeDriver no funciona actualmente en 'msedgedriver.exe'. Hay un RP en Selenium para admitir que https://github.com/SeleniumHQ/selenium/pull / 7164

Una forma de evitarlo es usar ChromeDriver y cambiar el nombre de 'msedgedriver.exe' a 'chromedriver.exe' para engañar a ChromeDriver para que inicie MSEdge.

1
babydragon89 15 may. 2019 a las 00:43

Estoy usando la versión 80.0.361.5 (construcción oficial) de "chromium edge" (64 bits), probé de la manera proporcionada por Jools , pero no funcionó para mí.

Comencé el "servidor de selenio" con la opción -Dwebdriver.chrome.driver = "pathTo \ msedgedriver.exe"

Agregué la carpeta que contiene el ejecutable de Edge "msedge.exe" en el entorno RUTA

Luego ejecuté el siguiente código, pero falló

System.setProperty("webdriver.chrome.driver", "C:\\SeleniumPlus\\extra\\msedgedriver.exe");
DesiredCapabilities m_capability = DesiredCapabilities.chrome();
m_capability.setCapability(CapabilityType.BROWSER_NAME, BrowserType.CHROME);
WebDriver driver = new ChromeDriver(m_capability);

Intenté otra forma y funcionó para mí:

Comencé el "servidor de selenio" con la opción -Dwebdriver.edge.driver = "pathTo \ msedgedriver.exe"

Agregué la carpeta que contiene el ejecutable de Edge "msedge.exe" en el entorno RUTA

System.setProperty("webdriver.edge.driver", "C:\\SeleniumPlus\\extra\\msedgedriver.exe");
DesiredCapabilities m_capability = DesiredCapabilities.edge();
WebDriver driver = new EdgeDriver(m_capability);

nuevo EdgeDriver (m_capability); está en desuso, podemos usar RemoteWebDriver como se muestra a continuación:

driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), m_capability);
1
lei wang 18 dic. 2019 a las 08:45

En la actualidad, Microsoft Edge (Chromium) se encuentra en la fase de desarrollo.

Por lo tanto, se espera que algunas cosas no funcionen correctamente.

Puede intentar proporcionar comentarios sobre su problema desde el navegador MS Edge chromium.

enter image description here

Será útil para los desarrolladores de Microsoft Edge conocer el problema.

Gracias por su comprensión.

0
Deepak-MSFT 10 may. 2019 a las 12:36

Sup todas

Quiero confirmar que todo funciona con el navegador de borde del canal de desarrollo (basado en Chromium). Debes usar el System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir").concat("\\drivers\\msedgedriver.exe"));

Como puede ver, obtengo las propiedades de Chrome Webdriver usando el nuevo ejecutable msedgedriver.exe.

private void initializeEdgeDriver() 
 {

    System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir").concat("\\drivers\\msedgedriver.exe"));
    ChromeOptions chromeOptions = new ChromeOptions();
    chromeOptions.setBinary(
            "C:\\Program Files (x86)\\Microsoft\\Edge Dev\\Application\\msedge.exe");
    EdgeOptions edgeOptions = new EdgeOptions().merge(chromeOptions);
    webDriver = new ChromeDriver(edgeOptions);
    webDriver.manage().window().maximize();
    webDriverWait = new WebDriverWait(webDriver, GLOBAL_TIMEOUT);
}

Espero que esto ayude.

0
Android 20 jun. 2019 a las 11:41

Selenio con C # . Encuentre a continuación el proyecto de prueba de la unidad usando C # para Edge Beta. ¡Espero que esto ayude a alguien!

Necesitará el controlador Edge Beta y el navegador exe Enlace

using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System;

namespace EdgeBetaProject
{
[TestClass]
public class UnitTest1
{
    [TestMethod]
    public void TestMethod1()
    {
        IWebDriver _driver=null;


            var driverService = ChromeDriverService.CreateDefaultService(@"Folder Path where driver is present", "msedgedriver.exe");
            var driverOptions = new ChromeOptions
            {
                BinaryLocation = @"C:\Program Files (x86)\Microsoft\Edge Beta\Application\msedge.exe"
            };
            _driver = new ChromeDriver(driverService, driverOptions);
            _driver.Navigate().GoToUrl(@"https://www.google.com/");


            _driver.Quit();

    }
}
0
KR Akhil 6 dic. 2019 a las 11:11