Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

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

csharp
webdriver
selenium
Теги: #<Tag:0x00007fedbbc865d0> #<Tag:0x00007fedbbc86490> #<Tag:0x00007fedbbc86328>

(Valerash “Valerash”) #1

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

  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; //Выводит НИЧЕГО

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


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

(Valerash “Valerash”) #3

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


(Vladyslav Lopatynskyi) #4

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


(Alexandr D ) #5
  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 - надо заменить на переменную, в которой хранится ссылка на ваш драйвер, соответственно.