我在将Python Selenium无头谷歌Chrome脚本从Windows移植到导航到网站并下载文件的Linux服务器时遇到问题。该脚本在Windows和 Linux 服务器上运行时没有错误,但是Linux服务器上的脚本从不下载文件。
我不确定可能是什么问题。我认为这可能是权限问题,但我使用 wget 包运行了一个小脚本,并将文件下载到指定的文件夹中。
您认为什么可能会阻止同一脚本在 linux 服务器上下载文件?服务器安装了最新的 chrome 和 chromedriver(版本 81(,我的程序正确指向它们。
此脚本有效并下载图标
import wget
url = "https://www.python.org/static/img/python-logo@2x.png"
wget.download(url, '/external/gen_dir')
此脚本运行并关闭驱动程序,但从不下载任何内容(当指向本地计算机上的正确文件夹时,可在我个人计算机上的 Windows 中工作(。没有脚本中断错误与上述脚本具有相同的下载位置,因此我认为这不是权限问题。这两个脚本都是从同一文件夹执行的。
from selenium import webdriver
print('packages imported')
from selenium.webdriver.chrome.options import Options
print('options imported')
#specifying headless and download options
options = Options()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
driver = webdriver.Chrome(executable_path=r'team/mm/chromedriver', options=options)
#'/external/gen_dir' directory for sample data
params = {'behavior': 'allow', 'downloadPath': r'/external/gen_dir'}
driver.execute_cdp_cmd('Page.setDownloadBehavior', params)
print('download paramaters executed')
driver.get("https://www.thinkbroadband.com/download")
# initialize an object to the location on the html page and click on it to download
search_input = driver.find_element_by_css_selector('#main-col > div > div > div:nth-child(8) > p:nth-child(1) > a > img')
search_input.click()
driver.quit()
print('driver closed')
似乎是因为 driver.quit(( 在下载开始之前运行,所以
search_input.click()
time.sleep(5)
driver.quit()