作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在寻找一种将实例化对象及其所有属性存储到外部位置并稍后重用的方法。
到目前为止我尝试过的:
我遇到了这个[Serialization?]回答并尝试了它,但我得到的对象是空的。
算法/粗略代码:
@Listeners(TestListener.class)
public class TestRunner {
protected static Driver driver; //Driver implements WebDriver interface
//Step 1
public void method1(){
driver = new Driver(1); //creates a customized chromedriver instance. Chrome driver / browser session is opened here.
}
//Step 2
public void method2(){
try {
FileOutputStream fileOut = new FileOutputStream("card.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(driver);
out.close();
fileOut.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
//Step 3
//Just manually stop the test/debugger for testing
//Step 4
public void method4(){
try {
FileInputStream fileIn = new FileInputStream("card.ser");
ObjectInputStream in = new ObjectInputStream(fileIn);
driver = (Driver) in.readObject(); //here driver returns as null. In this line, im hoping to recreate the previous object to somehow control the browser again
in.close();
fileIn.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
一些信息:
这实际上与 this 中的 Selenium WebDriver 问题有关。所以问题。
所以我想做的是:
我之前没有序列化背景,我不确定我想做的事情是否可行。非常感谢任何帮助或指导。
最佳答案
假设 Driver 类也实现了 Serialized,我在代码中看到的一个问题是,驱动程序被声明为 protected 静态 Driver 驱动程序,但假设创建此类实例的方法 1 永远不会被执行,因此您不会执行当您序列化它时,没有该对象。在序列化之前尝试调用方法 1,如下所示:
public void method2(){
try {
FileOutputStream fileOut = new FileOutputStream("card.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
method1();
out.writeObject(driver);
out.close();
fileOut.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
关于Java:如何将整个对象存储到外部位置并重用它来重新创建对象以供以后使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43991767/
我是一名优秀的程序员,十分优秀!