【问题标题】:Opening URL's on same browser in different tab from CSV in Python在 Python 中与 CSV 不同的选项卡中在同一浏览器上打开 URL
【发布时间】:2019-10-12 11:57:55
【问题描述】:

我试图在单个窗口中的新选项卡中打开 URL 列表,但它却在新窗口中打开它们。请帮忙。这是我的URL.csv

SN,Title,URL
1,Google,https://google.com
2,youtube,https://youtube.com

import csv

from selenium import webdriver


def csv_url_reader(url_obj):
    reader = csv.DictReader(url_obj, delimiter=',')

    for line in reader:
        url = line["URL"]
        title = line["Title"]
        print(url + title)
        driver = webdriver.Chrome(r'C:\chromedriver_win32\chromedriver')
        driver.get(url)



if __name__ == "__main__":
    with open("URL.csv") as url_obj:
        csv_url_reader(url_obj)

【问题讨论】:

  • 使用 javascript 和机器人类 ...你可以运行 open new tab ...我在 java 中运行这个脚本 ..但是对于逻辑你可以参考这个代码 ..stackoverflow.com/a/56005236/4513879

标签: python selenium csv


【解决方案1】:

在您发布的那段代码中,您打开的是驱动程序实例中的 URL,而不是新选项卡。

相反,您应该尝试像这样打开新标签:

import csv

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

driver = webdriver.Chrome(r'C:\chromedriver_win32\chromedriver')
def csv_url_reader(url_obj):
    reader = csv.DictReader(url_obj, delimiter=',')


    for line in reader:
        url = line["URL"]
        title = line["Title"]
        print(url + title)
        driver.execute_script("window.open(" + url + ",'_blank');")



if __name__ == "__main__":
    with open("URL.csv") as url_obj:
        csv_url_reader(url_obj)

【讨论】:

  • 它只是打开一个空白页面。没有任何网址谢谢。
  • 您是否格式化了实际的 url 查询?现在试试,刚刚编辑了代码。
【解决方案2】:

要添加一个新标签,您将使用 send_keys(Keys.COMMAND + 't') 用于 mac, 要么 send_keys(Keys.CTRL + 't') 用于窗口

【讨论】:

  • 它不是打开一个新标签,而是在同一个标​​签上打开第二个链接
【解决方案3】:

当您将 driver = webdriver.Chrome(r'C:\chromedriver_win32\chromedriver') 放入循环中时,您正在为每个网站创建一个新的 webdriver 实例。

试试这样的:

import csv
import time

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

def csv_url_reader(url_obj):
    reader = csv.DictReader(url_obj, delimiter=',')
    driver = webdriver.Chrome(r'C:\chromedriver_win32\chromedriver')

    for line in reader:
        url = line["URL"]
        title = line["Title"]
        print(url + title)
        driver.find_element_by_tag_name('body').send_keys(Keys.COMMAND + 't') 
        driver.get(url)

if __name__ == "__main__":
    with open("URL.csv") as url_obj:
        csv_url_reader(url_obj)
    time.sleep(9999999)

【讨论】:

  • 感谢您的关心兄弟。现在发生了什么,它打开一个带有 google.com 的浏览器,而不是在同一个标​​签上打开一个新标签,而是打开 youtube.com,然后浏览器关闭。我想要的是它在第一个选项卡中打开 google.com,在第二个选项卡中打开 youtube.com 并保持打开状态。
  • 是的,我的错!试试这个:driver.execute_script(f'''window.open("{url}","_blank");''') 而不是 driver.find_element_by_tag_namedriver.get(url)。如果您需要关闭第一个空白窗口,请尝试在标签之间切换,例如this
  • 它仍然无法正常工作。几秒钟后浏览器正在关闭
  • 好吧,你能定义一下你打开这些页面后要做什么吗?
  • 我想在单个浏览器的不同选项卡上打开多个 url。即使我在 csv 中添加更多 url。我希望浏览器在加载链接后保持打开状态。谢谢。
猜你喜欢
  • 2018-10-30
  • 2012-06-20
  • 2016-10-18
  • 2020-06-04
  • 1970-01-01
  • 2016-08-12
  • 2017-07-28
  • 1970-01-01
相关资源
最近更新 更多