Перейти к содержимому

Фотография

Как открыть ссылку в новой вкладке

ссылка селениум

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 12

#1 Silari0n

Silari0n

    Новый участник

  • Members
  • Pip
  • 18 сообщений
  • ФИО:Руслан

Отправлено 12 июля 2018 - 06:13

Здравствуйте, пытаюсь открыть ссылку в новой вкладке, но нечего не получается.Пробывал много методов:
-робот
- Код

String baseUrl = "http://www.google.co.uk/";

webDriver.get(baseUrl);
webDriver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t");

ArrayList<String> tabs = new ArrayList<String> (webDriver.getWindowHandles());
webDriver.switchTo().window(tabs.get(1)); //switches to new tab
webDriver.get("https://www.facebook.com");

webDriver.switchTo().window(tabs.get(0)); // switch back to main screen
webDriver.get("https://www.news.google.com");

 

-Пробывал нажимать кнопки контрол+Т

Но каждый раз либо оно не открывает либо всегда пишет про ошибку (java: incompatible types: java.lang.String cannot be converted to com.sun.org.apache.xpath.internal.operations.String)

C этой ошибкой тоже разобратся не могу, пробывал в автоимпорт добавлять, но не работает. каждый раз надо добавлять изначально java.lang.String и только тогда уходит ошибка.

В этом же коде пишет вечно ошибку ( java: no suitable constructor found for ArrayList(java.util.Set<java.lang.String>)

    constructor java.util.ArrayList.ArrayList(int) is not applicable
      (argument mismatch; java.util.Set<java.lang.String> cannot be converted to int)
    constructor java.util.ArrayList.ArrayList(java.util.Collection<? extends com.sun.org.apache.xpath.internal.operations.String>) is not applicable
      (argument mismatch; java.util.Set<java.lang.String> cannot be converted to java.util.Collection<? extends com.sun.org.apache.xpath.internal.operations.String>))
Что не так я делаю?
и как открыть все же ссылку в новом вкладке?
P.S Пишу на java

  • 0

#2 TatyanaV

TatyanaV

    Опытный участник

  • Members
  • PipPipPipPip
  • 388 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 12 июля 2018 - 07:31

Теоретически, Ctrl+T не только открывает новую вкладку в хроме, но и автоматом на неё переключается.

Т.е. можно попробовать сохранить windowHandle основного окна (чтобы потом вернуться к нему), нажать Ctrl+T и без переключения на новую вкладку (в коде) попробовать сразу перейти на нужную страницу.

Я не пробовала так, не знаю, сработает ли.

 

п.с.: попробуйте ArrayList<String> tabs = (ArrayList<String>) webDriver.getWindowHandles();


  • 0

#3 Silari0n

Silari0n

    Новый участник

  • Members
  • Pip
  • 18 сообщений
  • ФИО:Руслан

Отправлено 12 июля 2018 - 07:37

Теоретически, Ctrl+T не только открывает новую вкладку в хроме, но и автоматом на неё переключается.

Т.е. можно попробовать сохранить windowHandle основного окна (чтобы потом вернуться к нему), нажать Ctrl+T и без переключения на новую вкладку (в коде) попробовать сразу перейти на нужную страницу.

Я не пробовала так, не знаю, сработает ли.

 

п.с.: попробуйте ArrayList<String> tabs = (ArrayList<String>) webDriver.getWindowHandles();

Вот я просто ввел эту строку и уже сразу ошибка (java: incompatible types: java.util.Set<java.lang.String> cannot be converted to java.util.ArrayList<com.sun.org.apache.xpath.internal.operations.String>) как ее убрать?


  • 0

#4 TatyanaV

TatyanaV

    Опытный участник

  • Members
  • PipPipPipPip
  • 388 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 12 июля 2018 - 07:42

 

Теоретически, Ctrl+T не только открывает новую вкладку в хроме, но и автоматом на неё переключается.

Т.е. можно попробовать сохранить windowHandle основного окна (чтобы потом вернуться к нему), нажать Ctrl+T и без переключения на новую вкладку (в коде) попробовать сразу перейти на нужную страницу.

Я не пробовала так, не знаю, сработает ли.

 

п.с.: попробуйте ArrayList<String> tabs = (ArrayList<String>) webDriver.getWindowHandles();

Вот я просто ввел эту строку и уже сразу ошибка (java: incompatible types: java.util.Set<java.lang.String> cannot be converted to java.util.ArrayList<com.sun.org.apache.xpath.internal.operations.String>) как ее убрать?

 

 

Ок, тогда просто Set<String> tabs webDriver.getWindowHandles();

getWindowHandles() возвращает Set<String>, поэтому проблем быть не должно (у меня в моем коде сделано именно через Set<String>. Тогда для переключения - надо сначала сохранить handle "текущего" окна, а потом удалить его из полученного Set'а (в нём останется только одно новое окно).


  • 1

#5 Silari0n

Silari0n

    Новый участник

  • Members
  • Pip
  • 18 сообщений
  • ФИО:Руслан

Отправлено 12 июля 2018 - 07:48

 

 

Теоретически, Ctrl+T не только открывает новую вкладку в хроме, но и автоматом на неё переключается.

Т.е. можно попробовать сохранить windowHandle основного окна (чтобы потом вернуться к нему), нажать Ctrl+T и без переключения на новую вкладку (в коде) попробовать сразу перейти на нужную страницу.

Я не пробовала так, не знаю, сработает ли.

 

п.с.: попробуйте ArrayList<String> tabs = (ArrayList<String>) webDriver.getWindowHandles();

Вот я просто ввел эту строку и уже сразу ошибка (java: incompatible types: java.util.Set<java.lang.String> cannot be converted to java.util.ArrayList<com.sun.org.apache.xpath.internal.operations.String>) как ее убрать?

 

 

Ок, тогда просто Set<String> tabs = webDriver.getWindowHandles();

getWindowHandles() возвращает Set<String>, поэтому проблем быть не должно (у меня в моем коде сделано именно через Set<String>. Тогда для переключения - надо сначала сохранить handle "текущего" окна, а потом удалить его из полученного Set'а (в нём останется только одно новое окно).

 

Вот ( java: incompatible types: java.util.Set<java.lang.String> cannot be converted to java.util.Set<com.sun.org.apache.xpath.internal.operations.String>) что не так я делаю?(


  • 0

#6 TatyanaV

TatyanaV

    Опытный участник

  • Members
  • PipPipPipPip
  • 388 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 12 июля 2018 - 08:05

Проверьте импорты свои. Не совсем понимаю, отуда у Вас берётся com.sun.org.apache.xpath.internal.operations.String

Если выше было предположение сходу, то Set - это уже 100% проверенный вариант, который у меня в коде уже давно и прекрасно работает.


  • 1

#7 Silari0n

Silari0n

    Новый участник

  • Members
  • Pip
  • 18 сообщений
  • ФИО:Руслан

Отправлено 12 июля 2018 - 08:13

Проверьте импорты свои. Не совсем понимаю, отуда у Вас берётся com.sun.org.apache.xpath.internal.operations.String

Если выше было предположение сходу, то Set - это уже 100% проверенный вариант, который у меня в коде уже давно и прекрасно работает.

Понял, нашел ошибку , 

String baseUrl = "http://www.google.co.uk/";

webDriver.get(baseUrl);
webDriver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t");

ArrayList<String> tabs = new ArrayList<String> (webDriver.getWindowHandles());
webDriver.switchTo().window(tabs.get(1))//switches to new tab
webDriver.get("https://www.facebook.com");

 

При этом коде открывается гугл, но не открывается новая вкладка с фейсбуком, вообще просто не получается сделать новую вкладку


  • 0

#8 TatyanaV

TatyanaV

    Опытный участник

  • Members
  • PipPipPipPip
  • 388 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 12 июля 2018 - 08:35

На том же stackoverflow, откуда видимо взят изначальный код = есть ссылка на багу самого хрома, о том, что Ctrl+t не работает.  

В баге ответ - "This should not work, web driver is intended to be used for testing web content, not the browser. They should create new tab programmatically via the web driver api instead. I would close this one as WontFix, but deferring it to you.".

Т.е. через Ctrl + T новая вкладка в ХромДрайвере не открывается, не должна и не будет.

 

А какая изначальная задача? 

Какой смысл у Вас в открывании ссылки в одной вкладке и тут же ссылки в другой вкладке?


  • 1

#9 Silari0n

Silari0n

    Новый участник

  • Members
  • Pip
  • 18 сообщений
  • ФИО:Руслан

Отправлено 12 июля 2018 - 08:48

На том же stackoverflow, откуда видимо взят изначальный код = есть ссылка на багу самого хрома, о том, что Ctrl+t не работает.  

В баге ответ - "This should not work, web driver is intended to be used for testing web content, not the browser. They should create new tab programmatically via the web driver api instead. I would close this one as WontFix, but deferring it to you.".

Т.е. через Ctrl + T новая вкладка в ХромДрайвере не открывается, не должна и не будет.

 

А какая изначальная задача? 

Какой смысл у Вас в открывании ссылки в одной вкладке и тут же ссылки в другой вкладке?

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


  • 0

#10 BadMF

BadMF

    Специалист

  • Members
  • PipPipPipPipPip
  • 809 сообщений
  • ФИО:Dmitry Petrov

Отправлено 12 июля 2018 - 11:31

 

На том же stackoverflow, откуда видимо взят изначальный код = есть ссылка на багу самого хрома, о том, что Ctrl+t не работает.  

В баге ответ - "This should not work, web driver is intended to be used for testing web content, not the browser. They should create new tab programmatically via the web driver api instead. I would close this one as WontFix, but deferring it to you.".

Т.е. через Ctrl + T новая вкладка в ХромДрайвере не открывается, не должна и не будет.

 

А какая изначальная задача? 

Какой смысл у Вас в открывании ссылки в одной вкладке и тут же ссылки в другой вкладке?

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

 

 

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

 

(сарказм)


  • 0

#11 Silari0n

Silari0n

    Новый участник

  • Members
  • Pip
  • 18 сообщений
  • ФИО:Руслан

Отправлено 12 июля 2018 - 11:36

 

 

На том же stackoverflow, откуда видимо взят изначальный код = есть ссылка на багу самого хрома, о том, что Ctrl+t не работает.  

В баге ответ - "This should not work, web driver is intended to be used for testing web content, not the browser. They should create new tab programmatically via the web driver api instead. I would close this one as WontFix, but deferring it to you.".

Т.е. через Ctrl + T новая вкладка в ХромДрайвере не открывается, не должна и не будет.

 

А какая изначальная задача? 

Какой смысл у Вас в открывании ссылки в одной вкладке и тут же ссылки в другой вкладке?

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

 

 

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

 

(сарказм)

 

Если есть предложение, буду только рад. Как можно приблизится к улучшению своих навыков и тд?

Есть какие то интересние статьи(хотя я читал и и не одну)
Может какие то предложение?Что бы просто не сидеть и не колупатся в носу


  • 0

#12 BadMF

BadMF

    Специалист

  • Members
  • PipPipPipPipPip
  • 809 сообщений
  • ФИО:Dmitry Petrov

Отправлено 12 июля 2018 - 11:56

простите, но наверное, я слишком расплывчато обыграл ваше неверное употребление прилагательного "автоматизированный", как-то грустно объяснять шутки, ну ладно.

 

для развития себя как автоматизатора, можно идти несколькими путями:

- порешать проблемки на https://www.hackerrank.com

- порешать задачки на sql-ex.ru

- открыть java tutorials и выполнить все задачи по java core, прямо с начала и дальше.

- поднять себе debian в консольном режиме на virtualbox, поднять на нём апач и какой-нибудь сайт или даже свой личный gitlab чтобы у себя, локальнинко, никому не показывая свой код (стыдно же...) сидеть и изучать git и как с ним работать да ещё и администрировать, да ещё и CI/CD прикрутить к своим проектам.

 

успехов.


  • 0

#13 Silari0n

Silari0n

    Новый участник

  • Members
  • Pip
  • 18 сообщений
  • ФИО:Руслан

Отправлено 13 июля 2018 - 05:40

простите, но наверное, я слишком расплывчато обыграл ваше неверное употребление прилагательного "автоматизированный", как-то грустно объяснять шутки, ну ладно.

 

для развития себя как автоматизатора, можно идти несколькими путями:

- порешать проблемки на https://www.hackerrank.com

- порешать задачки на sql-ex.ru

- открыть java tutorials и выполнить все задачи по java core, прямо с начала и дальше.

- поднять себе debian в консольном режиме на virtualbox, поднять на нём апач и какой-нибудь сайт или даже свой личный gitlab чтобы у себя, локальнинко, никому не показывая свой код (стыдно же...) сидеть и изучать git и как с ним работать да ещё и администрировать, да ещё и CI/CD прикрутить к своим проектам.

 

успехов.

Спасибо огромное за информацию, буду все изучать и тренироваться.


  • 0



Темы с аналогичным тегами ссылка, селениум

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных