我有一个使用Selenium的课程,因为我希望它以两种形式工作,并且我被告知要这样做:
public class selenium1
{
public ChromeDriver driverx;
public ChromeDriver create()
{
driverx = new ChromeDriver();
return driverx;
}
public ChromeDriver getDriver2()
{
return driverx;
}
}
在我的第一种形式中,我使用它,它运作良好。
ChromeDriver driver;
private void Form1_Load(object sender, EventArgs e)
{
vulcan2.selenium1 asd = new vulcan2.selenium1();
driver = asd.create();
}
但是后来第二次,当我想使用相同的驱动程序加载其他网站时:
ChromeDriver driver;
private void frmMain_Load(object sender, EventArgs e)
{
vulcan2.selenium1 asd = new vulcan2.selenium1();
driver = asd.getDriver2();
MessageBox.Show("dsadsadsa");
driver.Navigate().GoToUrl("http://google.com");
}
它只会冻结并崩溃我的应用程序。我该如何解决?
答案 0 :(得分:0)
在每个方法中,您将实例化selenium1类的新实例。每个selenium1对象都有自己的driverx,因此会为每个创建新的驱动程序。
我建议将driverx设为公共静态成员,并在create方法中检查此对象是否为null,如果是,则实例化ChromeDriver,然后返回driverx成员。
public static ChromeDriver driverx = null;
public ChromeDriver create()
{
if(driverx == null)
driverx = new ChromeDriver();
return driverx;
}
你也可以让你的selenium1类成为单例类,因为它最符合你的需求。