Открыть ссылку из списка ссылок в новой вкладке - PullRequest
0 голосов
/ 14 марта 2019

У меня есть куча ссылок в списке, и я хочу открыть каждую ссылку на отдельной вкладке (только одно окно).Я знаю, как открыть новую вкладку в Selenium, но по какой-то причине, когда я перебираю список, все ссылки открываются в одной вкладке, и я не знаю, что мне не хватает.Может ли кто-нибудь объяснить мне, что это за ошибка и как я могу это исправить?Я был бы очень признателен.

from selenium import webdriver as wd
from selenium.webdriver.common.keys import Keys

url_list = ["https://www.kdnuggets.com/2017/06/text-clustering-unstructured-data.html", "https://github.com/vivekkalyanarangan30/Text-Clustering-API/", "https://machinelearningblogs.com/2017/01/26/text-clustering-get-quick-insights-from-unstructured-data/", "https://machinelearningblogs.com/2017/06/23/text-clustering-get-quick-insights-unstructured-data-2/", "https://machinelearningblogs.com/2017/06/23/text-clustering-get-quick-insights-unstructured-data-2/"]


driver = wd.Firefox(executable_path="/usr/local/bin/geckodriver")


for url in url_list:
    body = driver.find_element_by_tag_name("body")
    body.send_keys(Keys.COMMAND + "t")
    driver.get(url)

В настоящее время использую python3.7, Firefox 65.0.1 и Selenium 3.141 на Mac

Ответы [ 2 ]

2 голосов
/ 14 марта 2019

Когда вы открываете новую вкладку, это новое окно для веб-драйвера, которое будет иметь уникальный дескриптор.driver.window_handles содержит список активных окон, вы можете использовать его для переключения на вновь созданное окно и выполнения над ним задач.

for url in url_list:
    body = driver.find_element_by_tag_name("body")
    body.send_keys(Keys.COMMAND + "t")
    driver.switch_to_window(driver.window_handles[-1])
    driver.get(url)

Обратите внимание, что вы будете использовать ту же самую переменную driver для ссылки нановое окно, поэтому если вы закрываете это окно, вам нужно снова переключиться на активное окно для выполнения дальнейших задач.

ОБНОВЛЕНИЕ:

Если новая вкладка не открывается с вашим кодом, тогдаВы также можете попробовать это.

for url in url_list:
    driver.execute_script("window.open()")
    driver.switch_to_window(driver.window_handles[-1])
    driver.get(url)
0 голосов
/ 14 марта 2019

использовать переключение окон с помощью команд

one=driver.window_handles[0] - установить имя первого окна

two=driver.window_handles[1] - имя второго окна (после его открытия)

driver.switch_to.window(two) - переключиться в нужное окно

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