在Firefox页面中用于
<object data="...">显示带有扫描的PDF。“上传的文档”部分中有按钮,以显示其他扫描。
这段代码使用这些按钮来显示扫描,从中获取数据
<object>并保存在文件
document-0.pdf中
document-1.pdf,等等。
我使用的是您在上一个问题的答案中看到的相同代码:
在python中使用Selenium
Webdriver保存pdf
from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.common.keys import Keysimport timeurl = 'https://maharerait.mahaonline.gov.in'#chrome_path = r'C:/Users/User/AppData/Local/Programs/Python/Python36/scripts/chromedriver.exe'#driver = webdriver.Chrome(executable_path=chrome_path)driver = webdriver.Firefox()driver.get(url)WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH,"//div[@]//a[contains(.,'Search Project Details')]"))).click()registered_project_radio = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID,"Promoter")))driver.execute_script("arguments[0].click();", registered_project_radio)application = driver.find_element_by_id("CertiNo")application.send_keys("P50500000005")search = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID,"btnSearch")))driver.execute_script("arguments[0].click();", search)time.sleep(5)View = [item.get_attribute('href') for item in driver.find_elements_by_tag_name("a") if item.get_attribute('href') is not None]# if there is list then get first elementif View: View = View[0]#-----------------------------------------------------------------------------# load page driver.get(View)# find buttons in section `Uploaded documents`buttons = driver.find_elements_by_xpath('//div[@id="Divdocument"]//button')# work with all buttons for i, button in enumerate(buttons): # click button button.click() # wait till page display scan print('wait for object:', i) search = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.TAG_NAME, "object"))) # get data from object print('get data:', i) import base64 obj = driver.find_element_by_tag_name('object') data = obj.get_attribute('data') text = data.split(',')[1] bytes = base64.b64depre(text) # save scan in next PDF print('save: document-{}.pdf'.format(i)) with open('document-{}.pdf'.format(i), 'wb') as fp: fp.write(bytes) # close scan print('close document:', i) driver.find_element_by_xpath('//button[text()="Close"]').click()# --- end ---driver.close()


