首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >硒和边缘发展(铬基)

硒和边缘发展(铬基)
EN

Stack Overflow用户
提问于 2019-05-10 11:08:09
回答 7查看 23.5K关注 0票数 10

我正在使用Java和边缘开发(基于铬)运行Selenium测试。我已经从这里下载了驱动程序二进制(在我的例子中是64位)。

Windows 10上安装的my Edge Dev版本为76.0.152.0 (官方版本build 64位):

然后,我有以下JUnit 4测试:

代码语言:javascript
复制
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"));
    }

}

..。其失败情况如下:

代码语言:javascript
复制
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]

有什么想法吗?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2019-05-14 16:06:52

让它起作用了。我的设置与您的有些不同,因为我使用的是网格,但它应该非常类似。

对我来说,当从网格请求驱动程序时,我使用了铬功能:

代码语言:javascript
复制
m_capability = DesiredCapabilities.chrome();
m_capability.setCapability( "browserName", "chrome" );

所以在你的情况下,我想你会想要这样做:

代码语言:javascript
复制
driver = new ChromeDriver();

在启动节点时,我指定铬驱动程序指向边缘驱动程序(我在路径上有它,因此不需要绝对路径)

代码语言:javascript
复制
java -Dwebdriver.chrome.driver=msedgedriver.exe ...

所以在你的情况下,你会想要这样做的:

代码语言:javascript
复制
System.setProperty("webdriver.chrome.driver",
        "C:\\Users\\boni\\Downloads\\msedgedriver.exe");

要记住的另一件事是在您的路径上有Edge可执行文件的位置(参见下面)

对于边缘开发,您需要添加:

代码语言:javascript
复制
C:\Program Files (x86)\Microsoft\Edge Dev\Application\

或者如果你在使用金丝雀,很可能是:

代码语言:javascript
复制
C:\Users\boni\AppData\Local\Microsoft\Edge SxS\Application\
票数 5
EN

Stack Overflow用户

发布于 2019-05-17 09:35:27

为了结束这个问题,基于Jools的回答,我更新了我的测试(使用了最新版本的WebDriverManager),现在它正在工作:

代码语言:javascript
复制
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"));
    }

}
票数 4
EN

Stack Overflow用户

发布于 2019-12-18 08:45:50

我使用的是“铬边”版本80.0.361.5 (正式构建) dev (64位),我尝试了由Jools提供的方式,但它对我无效。

我使用选项-Dwebdriver.chrome.driver="pathTo\msedgedriver.exe“启动了"selenium服务器”

我在环境路径上添加了包含边缘可执行文件"msedge.exe“的文件夹

然后我运行了下面的代码,但是失败了

代码语言:javascript
复制
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“的文件夹

代码语言:javascript
复制
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,如下所示:

代码语言:javascript
复制
driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), m_capability);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56076421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档