在新标签页中打开链接列表中的链接

时间:2019-03-14 08:45:35

标签: python-3.x selenium firefox

我在列表中有一堆链接,我想在不同的选项卡(仅一个窗口)中打开每个链接。我知道如何在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)

当前在Mac上使用python3.7,Firefox 65.0.1和Selenium 3.141

2 个答案:

答案 0 :(得分:3)

当您打开新标签页时,它是webdriver的新窗口,它将具有其唯一的句柄。 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)

答案 1 :(得分:0)

通过命令使用窗口切换

one=driver.window_handles[0]-设置第一个窗口的名称

two=driver.window_handles[1]-第二个窗口的名称(打开后)

driver.switch_to.window(two)-切换到所需窗口