以下のC#の現在のコードはウィンドウを開き、ボタンをクリックした後、指定されたURLに移動します。
protected void onboardButton_Click(object sender, EventArgs e)
{
IWebDriver driver = new ChromeDriver();
driver.FindElement(By.CssSelector("body")).SendKeys(Keys.Control + "t");
driver.Navigate().GoToUrl("http://www.google.com")
}
しかし、私がナビゲートする予定のサイトにはシングルサインオンがあります。 既存のブラウザセッションで新しいタブを開き、そこから移動するにはどうすればよいですか?上記のコードは機能しないようです。
新しいタブを処理するには、最初に切り替える必要があります。以下を試してください:
driver.FindElement(By.CssSelector("body")).SendKeys(Keys.Control + "t");
driver.SwitchTo().Window(driver.WindowHandles.Last());
driver.Navigate().GoToUrl("http://www.google.com")
また、元に戻す必要がある場合があります。
driver.SwitchTo().Window(driver.WindowHandles.First());
送信 Keys.Control + "t"
がうまくいきませんでした。私はjavascriptでそれをしなければならなかったし、それに切り替える必要がありました。
((IJavaScriptExecutor)driver).ExecuteScript("window.open();");
driver.SwitchTo().Window(driver.WindowHandles.Last());
これはうまくいかないかもしれません:
driver.FindElement(By.CssSelector("body")).SendKeys(Keys.Control + "t");
代替方法:ターゲットが空白のクリック可能な要素を検索します(ページのsurceコードで「空白」を検索します)。これにより、新しいタブが開きます。
タブを切り替えるより(@Anderssonに感謝):
driver.SwitchTo().Window(driver.WindowHandles.Last());
driver.SwitchTo().Window(driver.WindowHandles.First());