4

C#の下の私の現在のコードは、ウィンドウを開き、ボタンをクリックした後に指定されたURLにナビゲートします。Seleniumを使用して既存のブラウザセッションで新しいタブを開く

 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") 

    } 

しかし、私はに移動する予定ですサイトには、シングルサインオンを持っています。 既存のブラウザセッションに新しいタブを開き、そこからナビゲートするにはどうすればよいですか?上記のコードは動作していないようです。

ありがとうございます!

+0

https://stackoverflow.com/a/34139132/3967709にも明確に説明されている解決方法があります。 – Gokul

答えて

6

新しいタブを処理するには、最初に切り替える必要があります。以下試してください:

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()); 
+0

問題を解決するには、ドライバをどのように初期化する必要がありますか?それは私のbuttonClickメソッドの外で、グローバル変数でなければなりませんか? @Andersson – JPaulPunzalan

+0

'driver'はブラウザセッションオブジェクトのインスタンスです。 'onboardButton_Click()'以外のいくつかのアクションのシーケンスをシミュレートする場合は、この関数の外で 'driver'を定義する必要があります。 – Andersson

+0

どうすれば既存のセッションを初期化できますか?現在のセッションで新しいタブではなく新しいウィンドウを起動するため、新しいChromeDriver()を使用することはできません。 – JPaulPunzalan

0

ただ一言。

IWebDriver driver = new ChromeDriver(); 

私はなぜ知らない

var driver = new ChromeDriver(); 

に変更します。 IWebDriverがメソッドを見逃している可能性があります。

関連する問題