我的JUnit测试在eclipse中正常运行并在本地传递然而在Jenkins我的第一次测试通过而第二次测试失败并且我知道为什么但是无法找出解决方案。詹金斯的输出结果表明它无法找到元素,但它存在,我有适当的等待。
这是第一个通过的测试案例。
@Before
public void setUp() throws Exception {
System.setProperty("webdriver.chrome.driver", "C:\\eclipse\\chromedriver\\chromedriver.exe");
driver = new ChromeDriver();
homeUrl = "https://myadp.adpcorp.com/wps/myportal/main/myADP_new";
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get(homeUrl);
}
//Full test
@Test
public void fullTest() throws Exception {
step01_VerifyHomePage();
}
// Go to Home page and verify title
public void step01_VerifyHomePage() throws Exception {
driver.getTitle().contains(homeTitle);
Thread.sleep(3000);
}
@After
public void tearDown() throws Exception {
driver.quit();
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) {
fail(verificationErrorString);
}
}
这是詹金斯失败的那个
//Full test
@Test
public void fullTest() throws Exception {
step02_HoverMyWorkSpace();
}
public void step02_HoverMyWorkSpace() throws Exception {
WebDriverWait wait = new WebDriverWait(driver,20000);
wait.until(ExpectedConditions.visibilityOfElementLocated((By.id("DivMyWorkList"))));
if ( driver.findElement(By.id("DivMyWorkList")).isDisplayed()){
System.out.println("DivMyWorkList Visiable");
}else{
System.out.println("DivMyWorkList NOT Visiable");
}
// Assert.assertEquals(true, workspace.isDisplayed());
// Thread.sleep(3000);
}
@After
public void tearDown() throws Exception {
driver.quit();
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) {
fail(verificationErrorString);
}
}
詹金斯输出
我认为问题是Jenkins无法找到该元素,因为该页面没有出现在它正在使用的环境中。我用的时候 wait.until(ExpectedConditions.visibilityOfElementLocated((By.id(" DivMyWorkList")))); Jenkins测试挂起并超时。
如果是这种情况,可以解决这个问题吗?第一次测试通过使用相同的URL并且第二次使用相同的URL到完全相同的页面并没有意义,它可以找到标题而不是web元素。
我正在使用VM并在其上创建了一个免费样式项目。 在过去的一周里,我一直在努力解决这个问题。