web-dev-qa-db-ja.com

SeleniumおよびEdge Dev(Chromiumベース)

Java andEdge Dev(Chromiumベース)でSeleniumテストを実行しようとしています。ダウンロードしました。ドライバのバイナリ(msedgedriver.exe、私の場合は64ビット) ここ から。

Windows 10にインストールされているEdge Devのバージョンは76.0.152.0(公式ビルドdev 64ビット)です。

enter image description here

次に、次の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"));
    }

}

...これは次のように失敗します:

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]

何か案が?

6
Boni García

この問題を解決するために、Joolsの回答に基づいて、(最新バージョンの WebDriverManager を使用して)テストを更新しました。

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は現在「msedgedriver.exe」では機能しません。 SeleniumにはそれをサポートするPRがあります https://github.com/SeleniumHQ/Selenium/pull/7164

回避策の1つは、ChromeDriverを使用し、「msedgedriver.exe」の名前を「chromedriver.exe」に変更して、ChromeDriverをだましてMSEdgeを起動させることです。

1
babydragon89

C#を使用したセレン。 Edge BetaのC#を使用したユニットテストプロジェクトを以下に示します。これが誰かを助けることを願っています!

Edge Beta Driverとブラウザexeが必要です Link

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

現在、 Microsoft Edge(Chromium) は開発段階にあります。

そのため、正常に機能しないことが予想されます。

MS Edgeクロムブラウザーから問題に関するフィードバックを提供することができます。

enter image description here

Microsoft Edgeの開発者が問題について知っておくと役立ちます。

わかってくれてありがとう。

0
Deepak-MSFT

みなさん、

すべてが開発チャネルのエッジブラウザ(Chromiumベース)で動作していることを確認したいと思います。 System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir").concat("\\drivers\\msedgedriver.exe"));を使用する必要があります

ご覧のとおり、新しいmsedgedriver.exe実行可能ファイルを使用してchrome webdriverプロパティを取得しています。

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

お役に立てれば。

0
Garreth Dean

私は "chromium Edge"バージョン80.0.361.5(公式ビルド)dev(64ビット)を使用していますJoolsが提供する方法を試しましたが、うまくいきませんでした。

オプション-Dwebdriver.chrome.driver = "pathTo\msedgedriver.exe"で「Seleniumサーバー」を起動しました

Edge実行ファイル「msedge.exe」を含むフォルダを環境PATHに追加しました

次に、次のコードを実行しましたが、失敗しました

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

私は別の方法を試しましたが、それは私にとってはうまくいきました:

「-Selenium server」をオプション-Dwebdriver.Edge.driver = "pathTo\msedgedriver.exe"で起動しました

Edge実行ファイル「msedge.exe」を含むフォルダを環境PATHに追加しました

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

new EdgeDriver(m_capability);は非推奨です。代わりに、以下のようにRemoteWebDriverを使用できます。

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