Sohaib Javed Ответов: 3

Откройте ссылку в новой вкладке с помощью Selenium C# для chrome


Привет,
Я пишу программу для запуска видео, перечисленных на моем сайте для целей тестирования, и здесь мне нужно запустить видео в разных вкладках одного и того же окна браузера.

У меня есть сто url-адресов видео в списке<string> videoLinks = getVideoUrls();
а теперь мне нужно выполнить эти видео по 5 за раз.

ChromeDriver driver = new ChromeDriver();
            driver.Navigate().GoToUrl("https://www.withoutabox.com" + videoLink);


Если я пойду вышеуказанным путем, то для всех видео мне придется создать новый объект ChromeDriver. Я хочу использовать один объект браузера chrome.

Я уже пробовал это сделать
IWebElement body = driver.FindElement(By.TagName("body"));
               body.SendKeys(Keys.Control + "t");



он только добавляет новую вкладку, но не открывает ссылку там.
Пожалуйста, дайте мне знать, как мне его обойти. Я погуглил, но не смог найти своего решения, поэтому решил обратиться за помощью к вам, гики.

Я был бы признателен за ваш ответ.
Спасибо

3 Ответов

Рейтинг:
25

Member 11314932

Действия действие = новые действия(_driver);
действие.KeyDown(Ключи.Контроль).MoveToElement(тело).Нажмите Кнопку().Выполнить();

Это откроет тело IwebElement в новой вкладке.


Рейтинг:
0

Revn

Я бы добавил, что этот кусок кода:

Actions action = new Actions(_driver);
action.KeyDown(Keys.Control).MoveToElement(body).Click().Perform();


не отпустите клавишу CTRL на клавиатуре, что может привести к открытию новой вкладки в том же окне, если этот фрагмент кода выполняется в цикле.

Так что правильная версия есть:

Actions action = new Actions(_driver);
action.KeyDown(Keys.Control).MoveToElement(body).Click().KeyUp(Keys.Control).Perform();


Рейтинг:
0

Member 14580847

драйвер var = новый ChromeDriver();
водитель.FindElement(By.CssSelector("Body")).SendKeys(Ключи.Управление + "t");
водитель.SwitchTo().Window(драйвер.Оконные ручки.Последний());
driver.Navigate().GoToUrl("http://www.google.com");