我使用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路径。请建议!!怎么解决这个问题.....
答案 0 :(得分:1)
最有可能的是,这与您的Selenium测试和Chrome浏览器路径无关,但与Jenkins奴隶和Chrome浏览器本身无关。 如果我错了,请纠正我,但是你的Jenkins正在从Windows服务运行奴隶并尝试打开Chrome浏览器。这意味着您已将Chrome流程作为Jenkins Windows服务的子流程启动,而Chrome正试图摆脱此问题(也称Chrome会在会话0中无法正常运行)。
还记录了一个错误here,您可以在其中阅读更多内容。
我的TFS运行测试也遇到过这种情况,测试代理被设置为Windows服务,解决方案是将其设置为进程。
因此,最简单的解决方案是将Jenkins设置为流程,而不是服务。