Selenium: Ctrl + клик для открытия в новой вкладке по-человечески - PullRequest
0 голосов
/ 04 марта 2019

проблематично:

Моя цель состоит в том, чтобы выполнить итерацию в списке результатов и открыть каждый результат в новой вкладке, выполнить мои тесты и закрыть связанный драйвер, прежде чем снова начинать со следующего в списке.Я использую firefox веб-драйвер в Ubuntu 18.04

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

Вот решения, которые я нашел в соответствующем сообщении:

1) Используйте методы send_keys, такие как:

driver.find_element_by_tag_name("body").send_keys(Keys.CONTROL + 't')

Однако, похоже, это не такработает в настоящее время.

2) используйте actionsChains с key_down и Key_up:

ActionChains(driver) \
.move_to_element(element) \
.pause(uniform(0,2)) \
.key_down(Keys.CONTROL)\
.click(element) \
.key_up(Keys.CONTROL)\
.perform()

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

Примечание: оба предыдущих метода также были опробованы с SHIFT и COMMAND вместо CONTROL во избежание глупой ошибки.

ПРИМЕЧАНИЕ. Этот метод является именно тем, для которого этот вопрос рассматривается как "дублировать ", но он больше не работает.-> он дает точно такой же результат, который действует как щелчок правой кнопкой мыши cf: Открытие новой вкладки с использованием комбинации клавиш Ctrl + щелчок в Selenium Webdriver

3) Используйте "execute_Script "метод для открытия новых окон с помощью js:

new_page_url=element.get_attribute('href')
driver.execute_script("window.open('"+new_page_url+"')")

Это решение работает, но это ненормальное поведение для интернет-пользователя.

Вопрос

1)Поскольку я предположил, что эти два первых решения устарели, есть ли какой-нибудь новый способ открыть ссылку на новой вкладке с помощью ярлыка и щелчка, как это мог бы сделать обычный пользователь?

2) Если я ошибаюсь, и эти решения все еще доступны, почему это дает мне такое неожиданное поведение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...