无法使用selenium 3.8.1和gecko驱动程序0.19.0找到匹配的功能集

时间:2018-01-05 04:03:57

标签: selenium firefox exception webdriver

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
//import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class Webdriver {

    public static void main(String[] args) throws InterruptedException {
        // TODO Auto-generated method stub


        System.setProperty("webdriver.gecko.driver", "C:\\Selenium\\geckodriver.exe");
        WebDriver driver = new FirefoxDriver();
        //System.setProperty("webdriver.chrome.driver","C:\\Selenium\\chromedriver.exe");
        //WebDriver driver = new ChromeDriver();

        driver.get("https://maps.mapmyindia.com");

        Thread.sleep(2000);
        driver.findElement(By.id("auto")).sendKeys("TCS");

        Thread.sleep(2000);
        driver.findElement(By.id("auto_geo")).click();

当我在eclipse luna上运行此代码时出现错误:线程中的异常" main" org.openqa.selenium.SessionNotCreatedException:无法找到匹配的一组功能

4 个答案:

答案 0 :(得分:9)

new FirefoxDriver(DesiredCapabilities caps); 

已弃用,请使用

FirefoxOptions options = new FirefoxOptions();
options.setCapability("marionette", false);
WebDriver webDriver = new FirefoxDriver(options);

你很高兴

答案 1 :(得分:1)

您应该为firefox添加功能。请修改您的代码,如下所示

 System.setProperty("webdriver.gecko.driver", "C:\\Selenium\\geckodriver.exe");

 DesiredCapabilities capabilities = new DesiredCapabilities();

 capabilities = DesiredCapabilities.firefox();
 capabilities.setBrowserName("firefox");
 capabilities.setVersion("your firefox version");
 capabilities.setPlatform(Platform.WINDOWS);
 capabilities.setCapability("marionette", false);

 WebDriver driver = new FirefoxDriver(capabilities);

 driver.get("https://maps.mapmyindia.com");

如果您的窗口为windows_nt,请将windows_nt代替windows

答案 2 :(得分:0)

SessionNotCreatedException

SessionNotCreatedException 扩展 WebDriverException ,并且是 RuntimeException ,表示会话无法被创造。

可能原因:

未创建新会话的可能原因如下:

  • JDK Selenium WebDriver {{之间的兼容性问题1}} 版本。
  • 前一个会话尚未发布的新会话按Web BrowserGeckoDriver访问相同的端口号。
  • 无法访问Marionette
  • 缺少CPU
  • 缺少Physical Memory
  • 缺少Swap Memory
  • 缺少Disc Cache
  • 系统内存在Network Bandwidth

代码块:

我在代码块中没有看到任何编码问题。

解决方案:

简单的解决方案如下:

  • 始终使用最新发布的JDK版本(Java SE 9.0.1),Selenium-Java客户端(v3.8.1),WebDriver变体(GeckoDriver v0.19.1)和Web浏览器(Firefox Quantum Browser)。
  • 如果Web浏览器的基本版本太旧,请考虑通过Revo Uninstaller卸载浏览器并安装最近发布的Firefox浏览器的GA版本。
  • 始终在tearDown()方法中使用quit(),以便正确销毁webdriver和webclient。
  • 在执行测试套件之前和之后,从IDE清理Project Workspace。
  • 在执行测试之前和之后清除浏览器缓存。
  • 定期使用CCleaner工具擦除操作系统。
  • 执行测试。

答案 3 :(得分:0)

另一个可能的原因是Firefox版本已过时。

我升级了版本,效果很好!

我只能打开浏览器设置options.setCapability("marionette", true);,然后在打开的窗口中通过“关于Firefox”对话框升级。然后,您必须删除关于marionette的行。

当我们尝试将marionettegeckodriver一起使用时,可能只是与setTimeout(createConnection, 1000);一起使用,后者具有不同的协议。任何比我了解更多的人都可以确认或否认!