Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Как кликнуть "колесиком" по ссылке, не используя правую клавишу?

webdriver
Теги: #<Tag:0x00007f7b65703dd8>

(Andrii Chorniak) #1

Добрый день, коллеги! Возникла проблема, надо кликнуть по сылке “колесиком”. Клик правой клавишей, а потом выбрать “Open link in a new tab” не подходит. Заранее спасибо.


(Dmitrii Demin) #2

@Andrey91
Можно в элемент с ссылкой послать нажатие ср.кл. мышки или же с помощью жабаскрипта открыть ссылку в новом окне


(Andrii Chorniak) #3

через ctrl+click не открывает( а как js?


(Dmitrii Demin) #4

Так-с, клавиши мышки я чего-то в классе Keys не нашел, ну да ладно.
В Java+Selenide будет так:

    Selenide.open("http://httpbin.org");
    String chord = Keys.chord(Keys.LEFT_CONTROL, Keys.ENTER);
    $(By.linkText("/user-agent")).sendKeys(chord );

В FF у меня таким образом ссылка открылась в новой вкладке.

P.S. Если же юзать Keys.SHIFT , то откроется новое окно, а не вкладка


(Dmitrii Demin) #5

Через JS (будет новое окно, а не вкладка):

  Selenide.executeJavaScript("window.open(arguments[0], true, arguments[1]);",
            "http://httpbin.org/user-agent",  // URL который нужно открыть
            "Какое-то новое окно"); // Вроде как название нового окна, но в FF его не увидел

(Andrii Chorniak) #6

спасибо


(Dmitrii Demin) #7

@asolntsev , в Selenide пригодилась бы фича открытия урла сразу в новом окне?


(asolntsev) #8

А хз. Можно сделать.
Пока не представляю, зачем это могло бы понадобиться, но фиг знает, может и полезно.


(Dmitrii Demin) #9

@asolntsev, не отходя от кассы:

  • может заодно SelenideElement’ам сделать методы передачи нажатия Escape, Tab, Enter клавиш в элемент?
    Лично я сталкивался с элементами, которые обрабатывали введенное значение только после потери фокуса, в этом случае передача клавиши Tab (или Enter) в элемент пришлась очень кстати.

$(locator).sendTab();
$(locator).sendEscape();
$(locator).sendEnter();

как-то так


(asolntsev) #10

Так есть такие :slight_smile:

$(locator).pressEnter(); 
$(locator).pressEscape();
$(locator).pressTab();

(Dmitrii Demin) #11

Значит я торможу, ну да ладно)


(Ddos1) #12

Вот мой вариант:
element = driver.find_element(By.TAG_NAME,"a") driver.execute_script("arguments[0].setAttribute('target','_blank');",element) element.click()
Таким образом мы присвоим ссылке атрибут target=’_blank’, который будет загружать страницу в новом окне.