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()', вы должны определенно определить «драйвер» вне этой функции, глобально – Andersson

+0

Как я могу инициализировать этот существующий сеанс? Я не могу использовать новый ChromeDriver(), потому что он запустил новое окно вместо новой вкладки текущего сеанса. – JPaulPunzalan

0

только одно слово.

IWebDriver driver = new ChromeDriver(); 

изменение

var driver = new ChromeDriver(); 

Я не знаю, почему. Может быть, IWebDriver пропустил этот метод.

Смежные вопросы