60 saniyede bir geri sayımım var ve bir öğenin web sayfasında çıkıp çıkmadığını kontrol etme görevim var (waituntil 60s). Sorun, başlamak için düğmeye tıkladığım zamandır. Zamanlayıcı, web sürücüsü bir zaman aşımı istisnası atana kadar başlamaz. Zamanlayıcıdan önce try-catch bloğunu neden çalıştırdığına dair hiçbir fikrim yok.Başka şeyler işlenirken zamanlayıcıyı nasıl çalıştırabilirim
Sorum şu: Zamanlayıcıyı ve blok çalışmayı aynı anda nasıl çalıştırabilirim. Ve bir istisna atılırsa, zamanlayıcı durur.
Herhangi bir fikrin var mı? Yardımın için minnettarım. Teşekkürler.
private void timer1_Tick(object sender, EventArgs e)
{
counter--;
if (counter == 0)
timer1.Stop();
txtTimer.Text = counter.ToString();
}
private void button2_Click(object sender, EventArgs e)
{
int counter = 60;
timer1 = new System.Windows.Forms.Timer();
timer1.Tick += new EventHandler(timer1_Tick);
timer1.Interval = 1000; // 1 second
timer1.Start();
txtTimer.Text = counter.ToString();
// Check if user is already logged in. If not => exit
try
{
driver.FindElement(By.Id("logout"));
}
catch (Exception)
{
MessageBox.Show("Error: Please login first.");
return;
}
button1.Enabled = true;
}
Neden "wait.Until" (açık bekle, burada açıklandı: http://www.seleniumhq.org/docs/04_webdriver_advanced.jsp#explicit-waits) yerine kullanamazsınız, ör. 'WebDriverWait wait = yeni WebDriverWait (sürücü, TimeSpan.FromSeconds (60)); IWebElement myDynamicElement = wait.Until ((d) => {return_FindElement (By.Id ("logout")); –
@KirilS. Çünkü txtTimer metin kutusuna geri sayımı göstermek istiyorum. Web sürücüsü için 60s zaman aşımı ayarlamıştım. –
oh, bu nedenle senkronize olmayan bir şekilde çalışmasını istiyor musunuz? Bunun gibi bir şey kullanmanız gerektiğini düşünüyorum: https://blogs.infosupport.com/c-5-0-async-explained-as-simple-as-possible/ (örneğin arka planda selenyum görevi, UI "bekliyor" -alan ve ön planda sayma) –