我的测试项目在BaseTest中有@BeforeClass和@AfterClass。类别:
public class BaseTest {
@BeforeClass(groups = {"first"})
public void beforeTest() {
getDriver().get("URL");
}
@AfterClass(alwaysRun = true)
public void afterTest() {
getDriver().close();
removeDriver();
}
}
和它的第一次测试。类:
public class SmokeTest extends BaseTest {
private PageOne pageOne = PageFactory.initElements(getDriver(), PageOne.class);
@Test(testName = "test1", groups = { "first" })
public void firstTest() {
pageOne.goSomething();
}
@Test(testName = "test2", groups = { "first" })
public void secondTest() {
pageOne.goSomethingElse();
}
}
WebDriver单例:
public class WebDriverSingleton {
private static WebDriver driver;
public static WebDriver getDriver() {
if (driver == null) {
driver = new ChromeDriver();
}
return driver;
}
public static void removeDriver() {
driver.quit();
driver = null;
}
}
而且效果很好。直到我添加了新的案例,我想在新的浏览器实例中开始。
我补充的是:
public class BaseModuleTest {
@BeforeClass(groups = {"second"})
public void beforeClass() {
getDriver().get("another URL");
}
}
public class ModuleTest extends BaseModuleTest {
private PageTwo pageTwo = PageFactory.initElements(getDriver(), PageTwo.class);
private PageOne pageOne = PageFactory.initElements(getDriver(), PageOne.class);
@Test(testName = "test1", groups = {"second"})
public void testUp() {
pageTwo.goToPageOne();
pageOne.doSomething(); // getting fail here
}
}
当我使用testgnconfiguration启动测试时。xml
>
org.openqa.selenium.NoSuchSession异常:会话ID为空。调用退出()后使用WebDriver?
就我使用的页面对象模型而言,我在“第二”组中使用的页面与在“第一”组中初始化的页面相同,我猜他们不知何故“记住”了第一个会话Id,该Id变为“null”。尽管我在ModuleTest中重新初始化了它们。test1()。。。
无论如何,如果我的建议是正确的,那么如何将新sessionId传递给实例化的页面对象呢?或者什么是重新初始化它们的正确方法?
看起来您的问题是:
@BeforeClass(groups = {"first"})
和
@AfterClass(alwaysRun = true)
您总是在完成一个类后销毁驱动程序对象,但您只是为特定组中的类创建驱动程序对象。我建议将您的@BeforeClass
调整为:
@BeforeClass(alwaysRun = true)
或者
@BeforeClass(groups = {"first, "second"})
org.openqa.selenium.NoSuchSessionException:会话ID为空。在调用退出()后使用WebDriver?构建信息:版本:“3.141.59”,修订版:“e82be7d358”,时间:“2018-11-14T08:17:03”系统信息:主机:“DESKTOP-NLBMRCD”,IP:“192.168.1.15”,os.name:“Windows 10”,os.ar
问题内容: 我的问题如下:如何在不同Java类中的测试中重复使用浏览器会话?我打开了这样的浏览器: 然后,我必须使用一些凭据登录网站,并在登录后想执行其他测试,所以我不想为每个测试都登录,因为我需要进行很多测试并为每个用户登录花十年时间。例如,流程如下所示:登录->推送一些组件->添加一些值->生成报告。在此之后,我想在另一个组件上生成其他报告,但是当我尝试使用它时,将给出一个空指针异常。有任何想
问题内容: 我们有一个基于JSF 2.0(MyFaces)构建并在Weblogic应用服务器上运行的应用程序。我们面临有关http Session的问题。 问题: 假设我已经在两个不同的IE窗口中打开了该应用程序,并在第一个窗口中提供了一些搜索输入。在第二个窗口的会话中共享在第一个窗口中接收到的搜索结果数据。 注: 。Bean的作用域为,范围为。共享变量没有问题。 知道为什么会这样吗,以及防止这种
问题内容: 我正在尝试使用Cucumber / Java编写一些硒自动UI测试。如果我的功能文件中只有一个测试,则一切正常。但是,如果我添加第二个测试,则会在上出现此错误: 基本上,我将在一个包中的InitializeWebdriver类上初始化webdriver变量,然后在其他(步骤定义)类中对其进行引用。我确实将下面的步骤定义作为InitializeWebdriver类的一部分列出,并且工作正
我正在运行一个通过ssh会话运行的程序。这意味着我使用putty连接到一个linux,程序开始,使用/etc/bash.bashrc文件。在某个时候,程序应该结束,通过putty的ssh会话应该断开连接。我现在用下面的代码做了一些事情,但它不起作用:程序退出,并留在linux shell中,这意味着putty已经连接好了。我所期望的是命令“exit”来结束putty ssh会话。 谢谢你的帮助。