【问题标题】:Selenium Python: Download PDF specified by DOM objectSelenium Python:下载由 DOM 对象指定的 PDF
【发布时间】:2015-08-07 15:51:42
【问题描述】:

我是 selenium 的新手,下面是我使用 selenium 下载日报的 pdf 文档的代码 从硒导入网络驱动程序;

#Setting the profile
profile = webdriver.firefox.firefox_profile.FirefoxProfile()
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', ('application/pdf'))
profile.set_preference('browser.download.dir',  '/home/jill/Downloads/Dinamalar');
browser = webdriver.Firefox();

browser.get("http://epaper.dinamalar.com/");
webobj = browser.find_element_by_id("liSavePdf");
ob = webobj.click();
  1. ob 的值为无。我检查了许多链接,在所有链接中,似乎有一个明确的“下载 pdf”按钮,可以直接下载预期的 pdf。就我而言,单击“保存 PDF”会将我定向到另一个页面,然后需要单击另一个“下载”按钮。

  2. 我不熟悉 DOM 对象。 “保存 PDF”似乎是一个 DOM 对象。所以我不确定如何进一步进行。

【问题讨论】:

    标签: python pdf dom selenium


    【解决方案1】:

    id 为liSavePdf 的元素不是包含onclick= 属性的元素。它包含一个您要单击的 a 元素:

    webobj.find_elements_by_tag_name('a')[0].click()
    

    【讨论】:

    • 成功了,我有一个问题。当我使用 click() 方法时,另一个网站已经打开。如何获取打开的子站点的 URL(我需要下载)?
    • 我的回答解决了这个问题。页面上有一个 javascript 函数可以生成弹出 url。我稍微修改了一点,所以你会直接得到链接。
    【解决方案2】:
    browser.execute_script('function downloadpdf(configPdfTypeValue){if(isLoginRequired){var response8=AjaxUtilsMethods.CheckUserLoginStatus();var strLogin=response8.value;if(strLogin=="InValid"){if(confirm("You need to Register Login to access this feature")){window.location.href=LoginPageURL;return false}else{return false}}}var current=currentslidepagenum;var fPath=$("#newslider").find("#"+currentslidepagenum+"").attr("src");var currPDFName;fPath=fPath.replace(".JPG","");fPath=fPath.replace(".jpg","");fPath=fPath.replace("Page","PagePrint");var PDFFileName=fPath.split("/");var PDFName="";PDFName=PDFFileName[PDFFileName.length-1];if(configPdfTypeValue=="1"){PDFName=PDFName.substring(0,10)}PDFName=PDFName+"_"+AjaxUtilsMethods.GetMD5ForGivenValue(PDFName+"_pressguess").value+".pdf";var path=fPath.substring(0,fPath.lastIndexOf("/")+1);PDFName=path+"/"+PDFName;return"http://epaper.dinamalar.com/"+PDFName}')
    

    这将返回 PDF 文件的链接

    http://epaper.dinamalar.com/PUBLICATIONS/DM/MADHURAI/2015/05/26/PagePrint//26_05_2015_001_b2b69fda315301809dda359a6d3d9689.pdf
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-04
      • 1970-01-01
      • 2019-05-28
      • 1970-01-01
      • 2022-10-08
      • 1970-01-01
      • 2020-04-08
      相关资源
      最近更新 更多