硒传递到第二表时崩溃

时间:2016-06-09 16:39:37

标签: c# selenium c#-4.0 .net-4.0 selenium-chromedriver

我有一个使用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");
        }

它只会冻结并崩溃我的应用程序。我该如何解决?

1 个答案:

答案 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类成为单例类,因为它最符合你的需求。