简体   繁体   English

Python + Selenium WebDriver:在新标签页中打开URL

[英]Python + Selenium WebDriver: open URL in new tab

I have a text document with a single URL on every line. 我有一个文本文档,每行都有一个URL。 I want each URL to be opened in a new tab. 我希望在一个新标签页中打开每个URL。 Heres what I have so far: 这是我到目前为止的内容:

tabs = 0
f = open('links.txt', 'r', encoding='utf-8')
for line in f:
    url = line
    driver.execute_script("window.open(url, 'new_window')")
    sleep(7) # time to let tge page load
    tabs = tabs + 1 # to keep track of how many tabs I have

This gives me the error: 这给了我错误:

Traceback (most recent call last): File "scraper.py", line 100, in driver.execute_script("window.open(url, 'new_window')") File "C:\\Python37\\lib\\site-packages\\selenium\\webdriver\\remote\\webdriver.py", line 635, in execute_script 'args': converted_args})['value'] File "C:\\Python37\\lib\\site-packages\\selenium\\webdriver\\remote\\webdriver.py", line 320, in execute self.error_handler.check_response(response) File "C:\\Python37\\lib\\site-packages\\selenium\\webdriver\\remote\\errorhandler.py", line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: unknown error: url is not defined 追溯(最近一次通话最近):在driver.execute_script(“ window.open(url,'new_window')”)中的文件“ scraper.py”,第100行,文件“ C:\\ Python37 \\ lib \\ site-packages \\ selenium \\ webdriver \\ remote \\ webdriver.py”,行635,在execute_script'args':converted_args})['value']文件“ C:\\ Python37 \\ lib \\ site-packages \\ selenium \\ webdriver \\ remote \\ webdriver.py”在执行self.error_handler.check_response(response)文件“ C:\\ Python37 \\ lib \\ site-packages \\ selenium \\ webdriver \\ remote \\ errorhandler.py”中的行320,在check_response中引发exception_class(消息,屏幕, stacktrace)selenium.common.exceptions.WebDriverException:消息:未知错误:URL未定义

I have tried everything, but can't get it to work. 我已经尝试了一切,但无法正常工作。 Any Ideas? 有任何想法吗?

You are trying to pass url variable incorrectly in execute_script . 您试图在execute_script错误地传递url变量。 Do this instead - 改为这样做-

    tabs = 0
    f = open('links.txt', 'r', encoding='utf-8')
    for line in f:
        url = line
        driver.execute_script("window.open(arguments[0])", url)
        sleep(7) # time to let tge page load
        tabs = tabs + 1 # to keep track of how many tabs I have

Where, arguments[0] refers to your url. 其中, arguments[0]指向您的网址。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM