セレンウェブドライバを使ってWebアプリケーションを自動化する際に問題があります。セレンウェブドライバは、新しいウィンドウが開いた時点を知り、実行を再開する方法を教えてください。
ウェブページにはボタンがあり、クリックすると新しいウィンドウが開きます。私は次のコードを使用すると、それは上記の問題を解決するためにOpenQA.Selenium.NoSuchWindowException: No window found
WebDriver.FindElement(By.Id("id of the button that opens new window")).Click();
//Switch to new window
_WebDriver.SwitchTo().Window("new window name");
//Click on button present on the newly opened window
_WebDriver.FindElement(By.Id("id of button present on newly opened window")).Click();
を投げる私は、ボタンのクリックとSwitchTo
文の間Thread.Sleep(50000);
を追加します。
WebDriver.FindElement(By.Id("id of the button that opens new window")).Click();
Thread.Sleep(50000); //wait
//Switch to new window
_WebDriver.SwitchTo().Window("new window name");
//Click on button present on the newly opened window
_WebDriver.FindElement(By.Id("id of button present on newly opened window")).Click();
それは問題を解決しますが、ウィンドウを開くにはもっと時間がかかる場合、コードは失敗し、ウィンドウをすばやく開くならば、それはテストが必要以上に遅くなりますので、私はThread.Sleep(50000);
ステートメントを使用する必要はありません。
ウィンドウが開いてテストが実行を再開できるかどうかを知る方法はありますか?操作はPythonで、例えば成功するまで
返事ありがとうございます。それは働いています。 – Ozone
新しいタブが開かれているがドライブインスタンスにハンドルが追加されていない場合があります。私の解決策はクリックする前に現在のハンドル数を取得してからwhileループ中にカウントが変更されたかどうかをチェックします。その後、この 'driver.switchTo()。window(handles [handles.count() - 1]);'のように新しく開かれたタブに切り替えます。 ''ハンドル 'は各繰り返しで更新されます。 – Edgar