Selenium как открыть новую вкладку (не браузер) и там скопировать текст из Элемента C#

Добрый день, у меня такие вопросы :

  1. Как открыть новую вкладку (не браузер) в Google Chrome через Selenium
  2. Как в этой новой вкладке можно скопировать текст из Элемента
  3. Как можно скопировать текст из поисковой строки браузера (той, что сверху)

Вот мой код, я открываю Хром на сайте google.com, вписываю туда текст, потом пытаюсь скопировать, но копируется всегда “null”, соответственно “null” и выводится.

IWebDriver driver = new ChromeDriver(new ChromeOptions());
driver.Navigate().GoToUrl("https://www.google.com/");//НЕ СМОТРЯ НИ НА ЧТО ОТКРЫВАЕТ НОВЫЙ ХРОМ
driver.Manage().Window.Maximize();
driver.FindElement(By.ClassName("gsfi")).SendKeys("Selenium"); //Нахожу строку поиска Google и вписываю "Selenium"
string str = driver.FindElement(By.Name("q")).GetAttribute(Text); //str получает "null", хотя в строке записано "Selenium"
label1.Text = str; //Выводит НИЧЕГО

Буду очень признателен за помощь, потому что я себе уже с этим голову сломал (

1 лайк
  1. Посылайте Key Sequences.
    Для Мака - cmd+t
    Винда вроде ctrl+shift+T
  2. Вам необходимо свичнуться на эту табу, и работать с ней как с обычной. То-есть открыть урлу найти элемент, скопировать текст и делать с ним уже все что захотите
  3. Возьмите у элемента value вместо текста
2 лайка

Спасибо за ответ, но я не могу просмотреть “value”, потому что это не часть сайта, а часть браузера. Или я что-то не так понял?

Возможно get_attribute('value') поможет

1 лайк
  1. DriverManager.Driver.FindElement(By.CssSelector("body")).SendKeys(Keys.Control + "t");
  2. Так же как и везде. Только вам надо переключиться на эту вкладку.
    Вариант в лоб выглядит так:
DriverManager.Driver.FindElement(By.CssSelector("body")).SendKeys(Keys.Control + "t");
DriverManager.Driver.SwitchTo().Window(DriverManager.Driver.WindowHandles.Last());

А дальше уже ищите элементы…
Ещё есть вариант с использованием JS:

DriverManager.Driver.ExecuteJavaScript("window.open();");
  1. Если вы уже открыли страницу, то взять её адрес можно так:
DriverManager.Driver.Url

Где DriverManager.Driver - надо заменить на переменную, в которой хранится ссылка на ваш драйвер, соответственно.

1 лайк