少なくとも InternetExplorerWebDriver では機能しないことを追加したかったIAlert alert = driver.SwitchTo().Alert();
のは、js cofirm アラートが起動するとすべてがブロックされ、c# で次のコード行を実行することさえできないためです。
私がしなければならなかったのは、実際に別のスレッドで確認ポップアップを実行してC#バックエンドでコントロールを解放し、コードの次の行を実行できるようにすることです。 jsがまだブロックされていないことを確認してください
したがって、私のコードは次のように見えます。
public class MyThread
{
public IWebDriver driver;
public NgWebElement element;
public MyThread(IWebDriver _driver, NgWebElement _el)
{
driver = _driver;
element= _el;
}
public void RunMe()
{
AsyncJavaScriptExecutor asyncJavaScriptExecutor = new AsyncJavaScriptExecutor(driver as IJavaScriptExecutor);
asyncJavaScriptExecutor.ExecuteScript("arguments[0].click(); callback();", new object[] { element });
}
}
次に、テストまたはページ オブジェクト モデルで
MyThread mthread = new MyThread(_driver, element);
Thread oThread = new Thread(new ThreadStart(mthread.RunMe));
oThread.Start();
while (!oThread.IsAlive){}
//need to sleep beore and afer sending keys to makes sure js is not blicking events
Thread.Sleep(1000);
oThread.Abort();
SendKeys.SendWait("{ENTER}");
Thread.Sleep(1000);