c#Selenium 2.53在firefox升级到47后转移到牵线木偶驱动程序

时间:2016-06-11 07:17:54

标签: c# selenium firefox firefox-marionette

我正在尝试使用selenium进入升级的firefox Web浏览器自动化。似乎硒需要木偶司机才能继续工作。我按照开发者设置的说明进行操作,

  1. 下载了驱动程序
  2. 将其重命名为wires.exe
  3. 以下代码没有设法将PATH正确设置为自定义路径。

    System.Environment.SetEnvironmentVariable(" webdriver.gecko.driver"," @C:\ DOWNLOADS \ wires.exe")

    所以我将wires.exe添加到debug \ bin文件夹然后wires.exe正常工作但我收到以下错误

      

    捕获了System.InvalidOperationException消息=未找到实体Source = WebDriver

    这是我用来启动webdriver的代码

    var stock = mongoose.model("vault",{
        name:{type:String},
        location:{type:String},
        minspent:{type:Number},
        minlength:{type:Number},
        member:{type:Boolean}
    });
    
    router.post('/logic',function(req,res,next){
    
        if (req.body.type == 'collection') {
            //edit corresponding attribute of all the items in that collection
            console.log("it is collection");
        } else if (req.body.type == "item") {
            //edit the corresponding attribute of the item
            product = req.body.productname;
            section = req.body.segment;
    
            stock.findOne({name:product}, function(err,doc) {
                if(err){console.log("failed to update doc");}
                doc.location = "The 6";
                doc.save();
            });
        }
        console.log("it went through");
        res.json({ ok: true });
    });
    

3 个答案:

答案 0 :(得分:3)

我也使用FirefoxDriver(新的FirefoxOptions())获得 “未找到实体” 错误。它似乎在C:\ Program Files(x86)\ Nightly中寻找firefox.exe而没有找到它。我发现这个工作:

FirefoxDriverService service = FirefoxDriverService.CreateDefaultService();
service.FirefoxBinaryPath = @"C:\Program Files (x86)\Mozilla Firefox\firefox.exe";
IWebDriver driver = new FirefoxDriver(service);

答案 1 :(得分:2)

我尝试使用它并且它正在工作:

  1. 安装FirefoxDevEdition
  2. 下载geckodriver.exe
  3. FirefoxDriverService service = FirefoxDriverService.CreateDefaultService(@"C:\Users\jmalpartida\Downloads\geckodriver-v0.8.0-win32", "geckodriver.exe");
    service.Port = 64444;
    service.FirefoxBinaryPath = @"C:\Program Files (x86)\Firefox Developer Edition\firefox.exe";
    IWebDriver driver = new FirefoxDriver(service);
    

答案 2 :(得分:0)

首先,您需要将驱动程序添加到系统路径中,而不是作为env变量。 其次,您需要将标志设置为所需的功能,而不是Firefox选项。请参阅:Marionette Webdriver

对于远程webdriver:

DesiredCapabilities capabilities = DesiredCapabilities.Firefox();  
capabilities.SetCapability("marionette", true); 
var driver = new RemoteWebDriver(capabilities); 

将webdriver添加到windows path

最简单的方法是打开开始菜单>搜索环境>打开编辑系统环境变量>点击环境变量>在路径>列表中搜索点击编辑>将;C:\path\to\webdriver\location\wires.exe添加到最后,然后点击保存。

对于您的本地(非webdriver)测试,您可以使用以下命令运行您的webdriver:

var driver = new FirefoxDriver(new FirefoxOptions());

你不应该使用

option1.IsMarionette = true; option1.AddAdditionalCapability("marionette", true);

如果您已在路径环境变量中正确设置了驱动程序路径。