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