0
私はタイマーカウントを60秒に下げ、要素がWebページ(waituntil 60s)で終了するかどうかをチェックするタスクを持っています。問題は、ボタンをクリックして開始するときです。タイマーは、Webドライバがタイムアウト例外をスローするまで開始しません。タイマーの前にtry-catchブロックを実行する理由がわかりません。他のものの処理中にタイマーを実行させるにはどうすればいいですか?
私の質問は、タイマーとtry-catchブロックの作業を同時に行う方法です。例外がスローされると、タイマーは停止します。
私はあなたの助けに感謝します。おかげさまで
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;
}
「wait.Until」を使用できないのはなぜですか(明示的な待機、http://www.seleniumhq.org/docs/04_webdriver_advanced.jsp#explicit-waits)。 'WebDriverWait wait =新しいWebDriverWait(ドライバ、TimeSpan.FromSeconds(60)); IWebElement myDynamicElement = wait.Until((d)=> { return d.FindElement(By.Id( "logout")); }); '? @KirilS。 –
。私はカウントダウンをテキストボックスtxtTimerに表示したいからです。私はすでに60秒のWebドライバのタイムアウトを設定しました。 –
ああ、非同期に実行したいのですか?私はあなたが次のようなものを使用する必要があると思う:https://blogs.infosupport.com/c-5-0-async-explained-as-simple-as-possible/(すなわち、背景上のセレンタスク、UI "待っている"フォアグラウンドでカウントダウンする) –