web-dev-qa-db-fra.com

Sélénium et Edge Dev (à base de chrome)

J'essaie d'exécuter un test Selenium avec Java et Edge Dev (basé sur Chromium). J'ai téléchargé le pilote binaire (msedgedriver.exe, 64 bits dans mon cas) de ici .

La version de mon Edge Dev installée sur Windows 10 est 76.0.152.0 (version officielle de développement 64 bits):

enter image description here

Ensuite, j'ai le test JUnit 4 suivant:

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"));
    }

}

... qui échoue comme suit:

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]

Une idée?

6
Boni García

Juste pour fermer ce problème, basé sur la réponse de Jools, j'ai mis à jour mon test (en utilisant la dernière version de WebDriverManager ) et maintenant cela fonctionne:

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"));
    }

}
1
Boni García

EdgeDriver ne fonctionne pas actuellement sur 'msedgedriver.exe'. Il y a un PR sur Selenium pour soutenir cela https://github.com/SeleniumHQ/Selenium/pull/7164

Une façon de contourner le problème consiste à utiliser ChromeDriver et à renommer "msedgedriver.exe" en "chromedriver.exe" pour inciter ChromeDriver à lancer MSEdge.

1
babydragon89

Sélénium utilisant C # . Veuillez trouver ci-dessous un projet de test unitaire utilisant C # pour Edge Beta. J'espère que cela aide quelqu'un!

Vous aurez besoin du pilote Edge Beta et de l'exe du navigateur Lien

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

À l'heure actuelle, Microsoft Edge (Chromium) est en phase de développement.

Il est donc prévu que certaines choses ne fonctionnent pas correctement.

Vous pouvez essayer de fournir des commentaires concernant votre problème à partir du navigateur Chrome MS Edge.

enter image description here

Il sera utile aux développeurs de Microsoft Edge de prendre connaissance du problème.

Merci pour votre compréhension.

0
Deepak-MSFT

Salut tout le monde,

Je veux confirmer que tout fonctionne avec le navigateur Edge du canal de développement (basé sur Chromium). Vous devez utiliser la System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir").concat("\\drivers\\msedgedriver.exe"));

Comme vous pouvez le voir, j'obtiens les propriétés du pilote Web chrome en utilisant le nouvel exécutable 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);
}

J'espère que cela t'aides.

0
Garreth Dean

J'utilise "chromium Edge" version 80.0.361.5 (version officielle) dev (64 bits), j'ai essayé la méthode fournie par Jools, mais cela n'a pas fonctionné pour moi.

J'ai démarré le "serveur Selenium" avec l'option -Dwebdriver.chrome.driver = "pathTo\msedgedriver.exe"

J'ai ajouté le dossier contenant l'exécutable Edge "msedge.exe" sur l'environnement PATH

Ensuite, j'ai exécuté le code suivant, mais il a échoué

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);

J'ai essayé une autre façon et cela a fonctionné pour moi:

J'ai démarré le "serveur Selenium" avec l'option - Dwebdriver.Edge.driver = "pathTo\msedgedriver.exe"

J'ai ajouté le dossier contenant l'exécutable Edge "msedge.exe" sur l'environnement PATH

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

nouveau EdgeDriver (m_capability); est déconseillé, nous pouvons utiliser RemoteWebDriver à la place comme ci-dessous:

driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), m_capability);
0
lei wang