1
我有两个硒测试一个接一个地运行。我有服务员注入测试,等待元素在与它们交互之前变得可见。 问题是,有时第二次测试正在等待元素在第一次测试中加载期间开始。第二次硒测试在第一次测试完成之前开始
这是服务员:
public void waitElementIsVisible(String locator) {
logger.info("Waiting for element with locator " + locator + " to load in " + driver.getCurrentUrl() + " page");
WebDriverWait wait = new WebDriverWait(driver, 15, 100);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(locator)));
}
这是一个使用服务员方法:
protected void clickJs(String locator){
waiters.waitElementIsVisible(locator);
JavascriptExecutor js = (JavascriptExecutor) driver;
WebElement el = findPageElementByXpath(locator);
js.executeScript("arguments[0].click();", el);
}
这是一个使用JavaScript方法点击上面说:
public ActivitiesPage goToActivitiesPage(){
clickJs(activitiesPage);
return new ActivitiesPage();
}
而这些测试:
@Test
public void doSuccessfulLoginTest(){
LoginPage page = new LoginPage();
page.doSuccessfulLogin("[email protected]", "qwerty").
goToActivitiesPage().
goToSignUpFormsPage().
clickCreateSignupFormButton().
specifySignUpFormName(Helper.getCurrentDateAndTime()).
clickNextButton().
selectLayout().
clickNextButton().
clickNextButton().
clickNextButton();
try {
System.out.println("assertions");
Assert.assertEquals(getDriver().getCurrentUrl().contains("dashboard"), true);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Test
public void doSuccessfulLoginTestAndPublishSignupForm(){
ActivitiesPage ap = new ActivitiesPage();
ap.goToSignUpFormsPage().
clickCreateSignupFormButton().
specifySignUpFormName(Helper.getCurrentDateAndTime()).
clickNextButton().
selectLayout().
clickNextButton().
clickNextButton().
clickNextButton();
try {
System.out.println("assertions");
Assert.assertEquals(getDriver().getCurrentUrl().contains("subscribe"), true);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
第二个测试开始于goToActivitiesPage()第一个测试方法,如果它里面的元素正在等待。
我可以确保在第二次启动之前完成第一次测试吗?
您没有提供测试方法,但是如果您没有并行运行它们,如果第二次测试开始,则意味着第一次测试结束。原因可能是'waitElementIsVisible'方法中的一个例外。 – Guy
您可以添加代码吗?将明确识别问题。 – NarendraR
在说明中增加了代码 –