如何只运行一次浏览器

时间:2018-05-16 07:05:42

标签: c# loops selenium webdriver instance

我想只启动浏览器一次,然后从那里获取非静态信息。但我的浏览器启动了很多次。当我的bool = false时,我怎么能只启动它一次并关闭它;

class Program
    {
        public static bool GameIsRun = true;
        static void Main(string[] args)
        {
            CheckGame();
        }

        public static ChromeDriver GetDriver()
        {
            return new ChromeDriver();
        }

        public static void CheckGame()
        {
            while (GameIsRun)
            {
                GetInformation(GetDriver());
            }
        }

        static void GetInformation(ChromeDriver driver)
        {
            driver.Navigate().GoToUrl("myURL");
            do
            {
               //loop for doing something on this page, I don't want to start my browser many times.  
            }
            while ();
        }
    }

3 个答案:

答案 0 :(得分:1)

愿这对你有用。

class Program
    {
        public static bool GameIsRun = true;
        public static IWebDriver driver = null;
        static void Main(string[] args)
        {
            CheckGame();
        }

        public static ChromeDriver GetDriver()
        {
            if(driver == null){
                 driver = new ChromeDriver();
            }
            return driver;
        }

        public static void CheckGame()
        {
            while (GameIsRun)
            {
                GetInformation(GetDriver());
            }
        }

        static void GetInformation(ChromeDriver driver)
        {
            driver.Navigate().GoToUrl("myURL");
            do
            {
               //loop for doing something on this page, I don't want to start my browser many times.  
            }
            while ();
        }
    }

答案 1 :(得分:1)

这背后的原因是while (GameIsRun)代码。 GameIsRun 总是正确的,这就是无限循环的原因。

如何解决问题:启动浏览器后,您必须将 GameIsRun 的值设为false:

public static void CheckGame()
            {
                while (GameIsRun)
                {
                    GetInformation(GetDriver());
                    GameIsRun = false;
                }
            }

使用此代码,一旦浏览器启动,它将使GameIsRun为false。

希望它能帮助您解决问题。

答案 2 :(得分:1)

为此你可以使用单身概念。

public sealed class Singleton
{
  private static Singleton instance=null;

  private Singleton()
  {
  }

  public static Singleton Instance
  {
    get
    {
        if (instance==null)
        {
            instance = new Singleton();
        }
        return instance;
    }
   }
 }

希望这会对你有所帮助。