Java 抛出异常 :Selenium 3. 4.0,Gecko 驱动程序 16.01,FF 53.01

标签 java selenium firefox

运行时,java抛出以下异常: 线程“main”org.openqa.selenium.SessionNotCreatedException 中出现异常:无法创建新的远程 session 。所需功能 = 功能 [{marionette=true, browserName=firefox, version=, platform=A. 我使用 gecko 驱动程序 16.1。当我使用 gecko 14.01 时,它会导航到 gmail 页面,然后即使我设置隐式等待也无法找到元素。

    import java.util.concurrent.TimeUnit;
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.firefox.MarionetteDriver;
    import org.openqa.selenium.remote.DesiredCapabilities;
    public class login {
    public static void main(String[] args) {
        // Create a new instance of the Firefox driver
    System.setProperty("webdriver.gecko.driver","C:/Users/asdf/Desktop/selenium/gecko32/geckodriver.exe");
    DesiredCapabilities capabilities=DesiredCapabilities.firefox();
    capabilities.setCapability("marionette", true);
    WebDriver driver = new MarionetteDriver(capabilities);
        //WebDriver driver = new FirefoxDriver();
        //  Wait For Page To Load
        // Put a Implicit wait, this means that any search for elements on the page
    driver.manage().timeouts().implicitlyWait(50, TimeUnit.SECONDS);
        // Navigate to URL
    driver.get("https://mail.google.com/");
    driver.manage().window().maximize();
    //driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        // gmail login
    driver.findElement(By.xpath("//*[@id='identifierId']")).sendKeys("username");
    driver.findElement(By.id("next")).click();
    driver.findElement(By.id("Passwd")).sendKeys("password");

最佳答案

这是您问题的答案:

SessionNotCreatedException 可能因不同原因而被观察到,例如 Selenium-geckodriver 版本不匹配、悬空 geckodriver 实例和操作系统琐事。我建议您考虑以下步骤:

  1. 任务管理器手动/编程方式杀死所有悬空的geckodriver实例。如果可能的话,重新启动系统。如果需要,请运行 CCleaner 以清除系统中所有不需要的操作系统杂务。
  2. 下载 Selenium Standalone Server 3.4.0Selenium Client 3.4.0从这里page .
  3. 从此 page 下载 geckodriver v.0.16.1 .
  4. 确保您已安装最新的稳定 GA 版 Mozilla Firefox 53.0
  5. MarionetteDriver 实现已停止,您可以考虑使用 FirefoxDriver 实现。
  6. 有关 MarionetteDriverGeckoDriver 的详细讨论,您可以考虑查看 this discussion .
  7. 这是您自己的代码,经过一些细微的调整后可以很好地执行:

    package demo;
    
    import java.util.concurrent.TimeUnit;
    
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.remote.DesiredCapabilities;
    
    public class Q44351100_SessionNotCreatedException 
    {
        public static void main(String[] args) 
        {
            System.setProperty("webdriver.gecko.driver","C:/your_directory/geckodriver.exe");
            DesiredCapabilities capabilities=DesiredCapabilities.firefox();
            capabilities.setCapability("marionette", true);
            WebDriver driver = new FirefoxDriver(capabilities);
            driver.manage().timeouts().implicitlyWait(50, TimeUnit.SECONDS);
            driver.get("https://mail.google.com/");
            driver.manage().window().maximize();
            driver.findElement(By.xpath("//*[@id='identifierId']")).sendKeys("username");
        }
    }
    

如果这能回答您的问题,请告诉我。

关于Java 抛出异常 :Selenium 3. 4.0,Gecko 驱动程序 16.01,FF 53.01,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44351100/

相关文章:

java - 确定 Java 中的有效日期

Javascript 从 Array.from() 方法返回多个范围

python - 使用 Selenium/Python/Nose 时浏览器实例化两次

java - TestNG 默认情况下禁用从不安全的 URL 加载 DTD

javascript - 如何在 Firefox 的 html 表上触发 onkeydown 事件?

java - 如何使用 JUnit 在 Spring 中测试单个服务?

java - 将数据复制到 SD 卡时出现 FileNotFoundException - Android

python - 如何在 Python 中模拟 Firefox "Save File"-> OK

firefox - 从正在运行的 Flash SWF 文件中提取图像?

java - 我怎样才能正确舍入这个数字?