Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Selenium click()下载多个文件?_Python_Selenium_Firefox_Selenium Webdriver - Fatal编程技术网

Python 使用Selenium click()下载多个文件?

Python 使用Selenium click()下载多个文件?,python,selenium,firefox,selenium-webdriver,Python,Selenium,Firefox,Selenium Webdriver,使用Firefox/Python/Selenium——我可以在网页上的文件链接上使用click()来下载它,并按预期将文件下载到我的下载文件夹中 但是,当我在多个链接上的click()中添加更多行时,脚本将不再按预期运行。它们不是下载的文件,而是在单独的浏览器窗口中打开,在脚本完成后,浏览器窗口将全部关闭 这是出于设计,还是有办法绕过它,或者有更好的办法在一个网页上下载多个文件 这是有问题的网站: 我正在尝试下载导言和第1-4卷所有部分的链接 我有一本定位器词典: IgDeskbookPageM

使用Firefox/Python/Selenium——我可以在网页上的文件链接上使用
click()
来下载它,并按预期将文件下载到我的下载文件夹中

但是,当我在多个链接上的
click()
中添加更多行时,脚本将不再按预期运行。它们不是下载的文件,而是在单独的浏览器窗口中打开,在脚本完成后,浏览器窗口将全部关闭

这是出于设计,还是有办法绕过它,或者有更好的办法在一个网页上下载多个文件

这是有问题的网站:

我正在尝试下载导言和第1-4卷所有部分的链接

我有一本定位器词典:

IgDeskbookPageMap = dict(IgDeskbookBannerXpath = "//div[contains(text(), 'The Inspector General Deskbook')]",
                         IgDeskbookIntroId     = "anch_202",
                         IgDeskbookVol1Part1Id = "anch_203",
                         IgDeskbookVol1Part2Id = "anch_204",
                         IgDeskbookVol1Part3Id = "anch_205",
                         IgDeskbookVol1Part4Id = "anch_206",
                         IgDeskbookVol2Id      = "anch_207",
                         IgDeskbookVol3Id      = "anch_208",
                         IgDeskbookVol4Part1Id = "anch_209",
                         IgDeskbookVol4Part2Id = "anch_210",
                         IgDeskbookVol4Part3Id = "anch_211"
方法如下:

 def click(self, waitTime, locatorMode, Locator):
    self.wait_until_element_clickable(waitTime, locatorMode, Locator).click()
这些是click()调用(有3个以上的调用,但只是在此处截断空间:

self.click(10,
                 "id",
                 IgDeskbookPageMap['IgDeskbookIntroId']
      )
      self.click(10,
                 "id",
                 IgDeskbookPageMap['IgDeskbookVol1Part1Id']
      )
      self.click(10,
                 "id",
                 IgDeskbookPageMap['IgDeskbookVol1Part2Id']
      )

如果在不同的选项卡中打开,下载多个文件的一种方法是使用您自己的编码语言遵循以下算法步骤:

for( all such links) :
   click() the pdf link
   findElement the download element
   click() the download link
   close the tab
   switch back to last tab  //should ideally be completed with previous step

如果在不同的选项卡中打开,下载多个文件的一种方法是使用您自己的编码语言遵循以下算法步骤:

for( all such links) :
   click() the pdf link
   findElement the download element
   click() the download link
   close the tab
   switch back to last tab  //should ideally be completed with previous step

我添加了以下启动Firefox的代码,现在在单击每个文件时,下载行为按预期工作:

     profile = webdriver.FirefoxProfile()
     profile.set_preference('browser.download.folderList', 2)
     profile.set_preference('browser.download.manager.showWhenStarting', False)
     profile.set_preference('browser.helperApps.alwaysAsk.force', False)
     profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/pdf,application/x-pdf')
     profile.set_preference("plugin.disable_full_page_plugin_for_types", "application/pdf")
     profile.set_preference("pdfjs.disabled", True)
     self.driver = webdriver.Firefox(profile)

我添加了以下启动Firefox的代码,现在在单击每个文件时,下载行为按预期工作:

     profile = webdriver.FirefoxProfile()
     profile.set_preference('browser.download.folderList', 2)
     profile.set_preference('browser.download.manager.showWhenStarting', False)
     profile.set_preference('browser.helperApps.alwaysAsk.force', False)
     profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/pdf,application/x-pdf')
     profile.set_preference("plugin.disable_full_page_plugin_for_types", "application/pdf")
     profile.set_preference("pdfjs.disabled", True)
     self.driver = webdriver.Firefox(profile)

您是否可以分享您试图点击哪个网站和哪些链接进行下载的详细信息?以及您为此使用了哪些代码。您是否可以提供链接类型的更多信息:文件、PDF、其他页面?这将有助于理解为什么要新建选项卡(这是一种设置)打开而不是下载文件。@nullpointer我已经编辑了这个问题,这有帮助吗?@BobSmall question edited--这些文件是PDFs@Vince-单击文件将重定向到较新的选项卡,在这种情况下,行为似乎是合理的。您是否可以分享您尝试单击下载的网站和链接的详细信息您正在为此使用hat代码。您能否提供链接类型的更多信息:文件、PDF、其他页面?这将有助于理解为什么要创建新选项卡(这是一种设置)打开而不是下载文件。@nullpointer我已经编辑了这个问题,这有帮助吗?@BobSmall question edited--这些文件是PDFs@Vince-单击文件重定向到一个较新的选项卡,在这种情况下,该行为似乎是合理的。感谢您的帮助,我能够拼凑一些代码并使我的原始任务正常工作。感谢您的帮助lp,我能够拼凑一些代码,并使我的原始任务工作。