无法在jenkins中为selenium脚本打开chrome浏览器

时间:2016-10-04 09:42:50

标签: jenkins selenium-webdriver jenkins-plugins

我使用Selenium WebDriver创建了一个测试框架,我想启动chrome浏览器,它运行正常,因为我通过eclipse运行相同,但当我尝试通过jenkins运行相同的脚本时,它会出现错误: - < / p>

错误: -

 T E S T S
-------------------------------------------------------
Running TestSuite
Starting ChromeDriver 2.24.417431 (9aea000394714d2fbb20850021f6204f2256b9cf) on port 45706
Only local connections are allowed.

我启动浏览器的代码是: -

public class BrowserSelection {
    public static WebDriver driver; 
    public FileInputStream fis;
    public static File file;

    public static Properties prop;
    public String username;
    public String password;
    public static XSSFWorkbook wb;
    public static XSSFSheet ws;
    public static WebDriverWait wait;
    public static Screen src;
    public static Pattern prn;




    @BeforeSuite()
    public void browser() throws Exception{
        //property file load
        prop=new Properties();
        file=new File(System.getProperty("user.dir")+"\\src\\main\\resources\\config\\config.properties");
        fis=new FileInputStream(file);
        prop.load(fis);
        //excel file load
        fis=new FileInputStream(System.getProperty("user.dir")+"\\src\\main\\resources\\excel\\data.xlsx");
        wb=new XSSFWorkbook(fis);

        file=new File("D:\\LoyalityFiles\\");
        //File[] dir_contents=file.listFiles();


        if (prop.getProperty("browser").equalsIgnoreCase("firefox")) {
            /*ProfilesIni profile=new ProfilesIni();
            FirefoxProfile myprofile=profile.getProfile(prop.getProperty("firefoxprofilename"));*/
            FirefoxProfile myprofile=new FirefoxProfile();
            myprofile.setPreference("browser.download.dir",prop.getProperty("firefoxfilesave"));
            myprofile.setPreference("browser.download.folderList", 2);  
            myprofile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/zip");               
            driver=new FirefoxDriver(myprofile);

        }else if (prop.getProperty("browser").equalsIgnoreCase("chrome")) {

            System.setProperty("Webdriver.chrome.driver",System.getProperty("user.dir")+prop.getProperty("chromeexe"));
            Map<String, Object> prefs = new HashMap<String, Object>();
            prefs.put("download.default_directory", prop.getProperty("chromefileSave"));

            DesiredCapabilities caps = DesiredCapabilities.chrome();

            ChromeOptions options = new ChromeOptions();
            options.setExperimentalOption("prefs", prefs);
            options.addArguments("--disable-extensions");
            caps.setCapability(ChromeOptions.CAPABILITY, options);

            driver=new ChromeDriver(caps);
        }       

        driver.get(prop.getProperty("testURL"));        
        //driver.manage().window().maximize();
        driver.manage().window().setSize(new Dimension(1366, 768));
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);    

    }

*这是基于maven的项目。

我认为Jenkins无法设置chrome exe路径。请建议!!怎么解决这个问题.....

1 个答案:

答案 0 :(得分:1)

最有可能的是,这与您的Selenium测试和Chrome浏览器路径无关,但与Jenkins奴隶和Chrome浏览器本身无关。 如果我错了,请纠正我,但是你的Jenkins正在从Windows服务运行奴隶并尝试打开Chrome浏览器。这意味着您已将Chrome流程作为Jenkins Windows服务的子流程启动,而Chrome正试图摆脱此问题(也称Chrome会在会话0中无法正常运行)。

还记录了一个错误here,您可以在其中阅读更多内容。

我的TFS运行测试也遇到过这种情况,测试代理被设置为Windows服务,解决方案是将其设置为进程。

因此,最简单的解决方案是将Jenkins设置为流程,而不是服务。