首页 > 解决方案 > 点击后如何获取url以了解它是否有404错误或使用selenium Firefox python将文件下载到首选位置

问题描述

我是使用 selenium Firefox python 环境进行网络自动化的新手。

第 1 步:- 我正在使用 driver.get 访问网页。在那里,我正在设置我的偏好以在特定位置下载文件。

Step2:- 在找到 driver.find_element_by_id("DecalNumber") 后向 Decal Number 提供数据。然后单击开始搜索按钮。

步骤 3:- 现在再次通过 xpath 访问单击按钮。

第 4 步:- 现在通过 xpath 访问再次单击一个按钮。这将在新窗口中打开一个文件(https://www.tdlr.texas.gov/DownLoadableContent/Elevator/Images/1197897/26695455.tif)作为示例。

我的问题如下:-

  1. 由于文件会自动保存在首选位置,并且大多数情况下我会收到 404 错误,找不到数据,有时我会收到 .tiff 图像数据。如何检查它是数据还是 404 错误???

  2. 如果未找到 404 错误,则需要使用 Shutil 库重命名正在下载的文件及其关联的贴花编号。但这里的问题是,如果我有 404 错误,则不会下载新文件。但是 shutil.move() 正在尝试将已下载的文件重命名为其他贴花编号。Shutil 正在尝试使用当前贴花编号更改文件名,这是不应该的。如何阻止这种情况发生?

欢迎任何线索。

from selenium import webdriver
# create webdriver object
fp = webdriver.FirefoxProfile()
fp.set_preference('browser.download.dir', r'C:\Users\Swaminathan Sekar\Documents\Decal_Final')
fp.set_preference('browser.download.folderList', 2)
fp.set_preference('browser.helperApps.neverAsk.saveToDisk', "image/tiff")
fp.set_preference('browser.download.manager.showWhenStarting', False)
fp.set_preference('browser.helperApps.neverAsk.openFile', "image/tiff")
fp.set_preference('browser.helperApps.alwaysAsk.force', False)
fp.set_preference('browser.download.manager.useWindow', False)
fp.set_preference('browser.download.manager.focusWhenStarting', False)
fp.set_preference('browser.download.manager.alertOnEXEOpen', False)
fp.set_preference('browser.download.manager.showAlertOnComplete', False)
fp.set_preference('browser.download.manager.closeWhenDone', False)
fp.set_preference("pdfjs.disabled", True)
driver = webdriver.Firefox(fp)
driver.maximize_window() 
driver.implicitly_wait(20)

driver.get("https://www.tdlr.texas.gov/Elevator_SearchApp/Elevator/Search")
window_before = driver.current_window_handle
Decal_test=Decal_Number[75:76]

for i in range(0,len(Decal_test)):
    inputElement1 = driver.find_element_by_id("DecalNumber")
    inputElement1.clear()
    inputElement1.send_keys(Decal_test[i])
    driver.find_elements_by_xpath("/html/body/div[1]/div[2]/div[3]/div/div[3]/div/form/div[6]/div/div[2]/button")[0].click()
    driver.find_elements_by_xpath("/html/body/div[1]/div[2]/div[3]/div/div[3]/div[2]/div/table/tbody/tr/td[3]/a[1]")[0].click()
    driver.find_elements_by_xpath("/html/body/div[1]/div[2]/div[2]/div/div[2]/div[1]/div[1]/table/tbody/tr[6]/td/button")[0].click()
    window_after = driver.window_handles[1]
    driver.switch_to.window(window_after)
    driver.implicitly_wait(30)
    driver.refresh()
    driver.find_element_by_xpath("//td[text()='Subsequent Inspection']/preceding-sibling::td[1]/a").click()
    wait = WebDriverWait(driver, 10)
    wait.until(EC.text_to_be_present_in_element(".tiff"))
    print(driver.current_url)
    time.sleep(20)
    driver.switch_to.window(window_before)
    driver.back()
    driver.back()
    Initial_path= r'C:\Users\Swaminathan Sekar\Documents\Decal_Final'
    filename = max([Initial_path + "\\" + f for f in os.listdir(Initial_path)],key=os.path.getctime,default=0)
    if filename !=0:
        shutil.move(filename,os.path.join(Initial_path, str(i)+'_'+str(Decal_test[i]) + ".tiff"))
print('Elasped time =',time.process_time(),'s')

标签: pythonseleniumfirefoxwebdriver

解决方案


推荐阅读