Selenium(c#console):我想退出所有的webdrivers并定期重启它们

时间:2018-01-13 22:14:16

标签: c# selenium timer console webdriver

我不擅长英语,所以我不知道自己是否写得正确。

我研究了一周的编程。

我想退出所有的webdrivers并每两个小时重新启动一次。但我失败了。

版本1

static void Main(string[] args)
{
    ChromeOptions options = new ChromeOptions();
    options.AddArgument("--start-maximized");
    IWebDriver driver = new ChromeDriver(options);
    System.Threading.Timer timer = new System.Threading.Timer(OnTimer, driver, 7200000, Timeout.Infinite);

    do {
    //Automation Program
    }while(true)

    driver.Quit();
}
static void OnTimer(Object driver)
{
    driver.Quit();
    /*
    Restart Process/Application code.
    Not made yet. Because driver.Quit() didn't work.
    */
}

第2版

static void Main(string[] args)
{
    System.Threading.Timer timer = new System.Threading.Timer(OnTimer, "test", 1000, 7200000);
}
static void OnTimer(Object state)
{
    ChromeOptions options = new ChromeOptions();
    options.AddArgument("--start-maximized");
    IWebDriver driver = new ChromeDriver(options);

    do {
    //Automation Program
    }while(true)

    driver.Quit();
}

我失败的原因是我试图用OnTimer来控制WebDriver。

退出webdriver并重新启动是否有好方法?

1 个答案:

答案 0 :(得分:0)

首先:您必须将IWebDriver驱动程序全局定义为非私有。

secound:你忘记了driver.close()命令。

第三:你必须在线程中执行你的进程而不要在另一个线程中执行你的计时器;

insert into TargetTable(degreeant, positionant, Amount)
SELECT degreeant, 0 as Positionant, Positionant_0 from StagingTable
union all 
SELECT degreeant, 1 as Positionant, Positionant_1 from StagingTable
union all 
SELECT degreeant, 2 as Positionant, Positionant_2 from StagingTable
{...}