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:无法找到匹配的一组功能
答案 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
扩展 WebDriverException
,并且是 RuntimeException
,表示会话无法被创造。
未创建新会话的可能原因如下:
JDK
, Selenium
, WebDriver
和 {{之间的兼容性问题1}} 版本。Web Browser
或GeckoDriver
访问相同的端口号。Marionette
CPU
Physical Memory
Swap Memory
Disc Cache
Network Bandwidth
。我在代码块中没有看到任何编码问题。
简单的解决方案如下:
答案 3 :(得分:0)
另一个可能的原因是Firefox版本已过时。
我升级了版本,效果很好!
我只能打开浏览器设置options.setCapability("marionette", true);
,然后在打开的窗口中通过“关于Firefox”对话框升级。然后,您必须删除关于marionette
的行。
当我们尝试将marionette
与geckodriver
一起使用时,可能只是与setTimeout(createConnection, 1000);
一起使用,后者具有不同的协议。任何比我了解更多的人都可以确认或否认!