1

在 Windows 10 Enterprise 64 位(Microsoft Edge 版本:25.10586.672.0)和 Microsoft WebDriver - Release 10240 的本地计算机上运行 selenium 时出现错误。我的 Selenium 版本是:3.6.0

public class SeleniumTest {
    private WebDriver driver;
      @BeforeClass
    public void getWebDriver() {
        try {
            System.setProperty("webdriver.edge.driver", "myapp/driver/MicrosoftWebDriver.exe");
            DesiredCapabilities capabilities = DesiredCapabilities.edge();
            capabilities.setCapability(CapabilityType.ForSeleniumServer.ENSURING_CLEAN_SESSION, true);
            capabilities.setCapability(CapabilityType.PAGE_LOAD_STRATEGY, "eager");             
            capabilities.setPlatform(Platform.WIN10);
            capabilities.setBrowserName(BrowserType.EDGE);
            capabilities.setVersion("");
            driver = new EdgeDriver(capabilities);              
        } catch (Exception e) {
                e.printStackTrace();
        }

        driver.get(Constant.URL);
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
    }

    @AfterClass
    public void quitDriver() throws InterruptedException {
        Thread.sleep(3000);
        driver.quit();
    }
       @Test ()
       public void aTest() {
       }
      @Test ()
      public void bTest() {
       }
}

当我运行代码时,它会打开 Edge 浏览器并出现错误:

org.openqa.selenium.NoSuchSessionException: null (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 873 milliseconds
Build info: version: '3.6.0', revision: '6fbf3ec767', time: '2017-09-27T15:28:36.4Z'
System info: host: 'computername', ip: 'myip', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_111'
Driver info: driver.version: EdgeDriver
4

2 回答 2

2

您可以考虑查看发行说明,因为它提到:

更新 .NET 绑定以不发送不正确的 W3C Firefox 功能 以前,RemoteWebDriver 在请求新的远程会话时会使用“desiredCapabilities”和“capabilities”属性发送相同的功能字典。在语言绑定明确要求使用旧版 Firefox 驱动程序的情况下,功能字典将包含对 W3C 兼容的远程服务器无效的属性。为了解决这个问题,我们将通过设置一个属性来屏蔽显式尝试,该属性会导致 .NET RemoteWebDriver 在显式请求旧版驱动程序时发送仅兼容旧版的新会话请求。

我在您的代码中没有看到任何重大错误,除了一个,看到NoSuchSessionException. 代替:

DesiredCapabilities capabilities = DesiredCapabilities.edge();

你应该使用:

DesiredCapabilities cap = new DesiredCapabilities();
于 2017-10-16T11:52:03.180 回答
0

您可能还需要启动驱动程序服务,即

service = new EdgeDriverService.Builder()
    .usingDriverExecutable(new File("path/to/my/MicrosoftWebDriver.exe"))
    .usingAnyFreePort()
    .build();
service.start();

看看这个EdgeDriver 的例子。

于 2017-10-15T02:15:22.610 回答