
[英]Application doesnt exist in C# console and I want to restart the console
[英]Selenium(c# console) : I want to quit all my webdrivers and restart them periodically
我的英语不好,所以我不知道我的写作是否正确。
我学习了一个星期的编程。
我想退出所有的网络驱动程序,然后每两个小时重新启动一次。 但是我失败了。
版本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并重新启动的好方法?
首先:您必须全局定义IWebDriver驱动程序而不是私有的。
secound:您忘记了driver.close()命令。
第三:您必须在线程中完成进程,而在另一个线程中不要放置计时器;
IWebDriver driver;
static void Main(string[] args)
{
ChromeOptions options = new ChromeOptions();
options.AddArgument("--start-maximized");
driver = new ChromeDriver(options);
System.Timers.Timer myTimer = new System.Timers.Timer();
myTimer .Elapsed+=new ElapsedEventHandler(OnTimedEvent);
myTimer .Interval=7200000;
myTimer .Enabled=true;
Thread th=new Thread(new ThreadStart(dosomething));
th.Start();
}
private static void dosomething()
{
// do something (works)
}
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
driver.Close();
driver.Quit();
driver.Dispose();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.