我正在使用Java和边缘开发(基于铬)运行Selenium测试。我已经从这里下载了驱动程序二进制(在我的例子中是64位)。
Windows 10上安装的my Edge Dev版本为76.0.152.0 (官方版本build 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]有什么想法吗?
发布于 2019-05-14 16:06:52
让它起作用了。我的设置与您的有些不同,因为我使用的是网格,但它应该非常类似。
对我来说,当从网格请求驱动程序时,我使用了铬功能:
m_capability = DesiredCapabilities.chrome();
m_capability.setCapability( "browserName", "chrome" );所以在你的情况下,我想你会想要这样做:
driver = new ChromeDriver();在启动节点时,我指定铬驱动程序指向边缘驱动程序(我在路径上有它,因此不需要绝对路径)
java -Dwebdriver.chrome.driver=msedgedriver.exe ...所以在你的情况下,你会想要这样做的:
System.setProperty("webdriver.chrome.driver",
"C:\\Users\\boni\\Downloads\\msedgedriver.exe");要记住的另一件事是在您的路径上有Edge可执行文件的位置(参见下面)
对于边缘开发,您需要添加:
C:\Program Files (x86)\Microsoft\Edge Dev\Application\或者如果你在使用金丝雀,很可能是:
C:\Users\boni\AppData\Local\Microsoft\Edge SxS\Application\发布于 2019-05-17 09:35:27
为了结束这个问题,基于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"));
}
}发布于 2019-12-18 08:45:50
我使用的是“铬边”版本80.0.361.5 (正式构建) dev (64位),我尝试了由Jools提供的方式,但它对我无效。
我使用选项-Dwebdriver.chrome.driver="pathTo\msedgedriver.exe“启动了"selenium服务器”
我在环境路径上添加了包含边缘可执行文件"msedge.exe“的文件夹
然后我运行了下面的代码,但是失败了
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);我尝试了另一种方法,这对我来说是有效的:
我使用选项-Dwebdriver.edge.driver="pathTo\msedgedriver.exe"启动了"selenium服务器“
我在环境路径上添加了包含边缘可执行文件"msedge.exe“的文件夹
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);https://stackoverflow.com/questions/56076421
复制相似问题