Java andEdge Dev(Chromiumベース)でSeleniumテストを実行しようとしています。ダウンロードしました。ドライバのバイナリ(msedgedriver.exe
、私の場合は64ビット) ここ から。
Windows 10にインストールされているEdge Devのバージョンは76.0.152.0(公式ビルドdev 64ビット)です。
次に、次の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]
何か案が?
この問題を解決するために、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"));
}
}
EdgeDriverは現在「msedgedriver.exe」では機能しません。 SeleniumにはそれをサポートするPRがあります https://github.com/SeleniumHQ/Selenium/pull/7164
回避策の1つは、ChromeDriverを使用し、「msedgedriver.exe」の名前を「chromedriver.exe」に変更して、ChromeDriverをだましてMSEdgeを起動させることです。
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();
}
}
現在、 Microsoft Edge(Chromium) は開発段階にあります。
そのため、正常に機能しないことが予想されます。
MS Edgeクロムブラウザーから問題に関するフィードバックを提供することができます。
Microsoft Edgeの開発者が問題について知っておくと役立ちます。
わかってくれてありがとう。
みなさん、
すべてが開発チャネルのエッジブラウザ(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);
}
お役に立てれば。
私は "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);