使用Chromedriver(Python)

时间:2018-02-02 17:33:34

标签: python google-chrome selenium selenium-chromedriver

Python 2.7.3
硒3.8.1
Chromedriver 2.35
Windows 10
我正在尝试从网站下载几个不同的文件,但它们具有相同的文件名。我想设置“download.prompt_for_download”:True ,这样我就可以在文件下载对话框打开时以编程方式键入每个文件名。 但它不起作用(甚至不是download.default_directory),它会自动下载文件,而不打开文件下载对话框,而且它不会保存在我设置的文件夹中。我已经阅读了类似的主题,但它没有用。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
from selenium.webdriver.chrome.options import Options

import unittest, time, re
class Lalala(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.implicitly_wait(30)
        self.base_url = "http://servicos.dnit.gov.br/dadospnct/ContagemContinua"
        self.verificationErrors = []
        self.accept_next_alert = True
    def test_lalala(self):

    options = Options()
    options.add_experimental_option("prefs", {
      "download.default_directory": r"C:\\Users\rafael.kobayashi\Desktop\Vh\BR101\\",
      "download.prompt_for_download": True,
      "download.directory_upgrade": True,
      "safebrowsing.enabled": True
    })
    driver = self.driver
    driver.get("http://servicos.dnit.gov.br/dadospnct/ContagemContinua")

2 个答案:

答案 0 :(得分:1)

我通过修改解决了这个问题:

def setUp(self):
    options = Options()
    options.add_experimental_option("prefs", {
      "download.default_directory": r"C:\\Users\rafael.kobayashi\Desktop\Vh\BR101",
      "download.prompt_for_download": True,
      "download.directory_upgrade": True,
      "safebrowsing.enabled": True
    })
    self.driver = webdriver.Chrome(options=options)
    self.driver.implicitly_wait(30)
    self.base_url = "http://servicos.dnit.gov.br/dadospnct/ContagemContinua"
    self.verificationErrors = []
    self.accept_next_alert = True  

答案 1 :(得分:0)

您必须输入文件名的提示来自系统,而不是浏览器,因此Selenium无法控制它。你需要使用像AutoIT这样的东西。

您没有显示您用于下载的代码,但我建议您设置“download.prompt_for_download”:False。具有相同名称的文件应该在您下载时出现多次,但后缀表示一个数字(就像您手动下载并且不更改名称一样)。如果没有发生,您可以编写代码,以便每次下载时,将下载的文件移动到您选择的名称。