python - 点击后如何获取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)作为示例。
我的问题如下:-
由于文件会自动保存在首选位置,并且大多数情况下我会收到 404 错误,找不到数据,有时我会收到 .tiff 图像数据。如何检查它是数据还是 404 错误???
如果未找到 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')
解决方案
推荐阅读
- scala - 在 Scala 中处理速率限制的可能性
- python - 熊猫正确地从文件中读取数据帧
- php - Laravel 模型属性在我保存时为空,但我已经在构造函数中验证了它们
- javascript - 如何在方法之外访问 const(Discord.js Bot 开发)
- css - Vuetify 继承组件中的样式
- java - 如何让 eclipse 项目在共享项目中引用来自 maven 本地存储库的源 jar?
- spring-boot - Spring Boot 验证 CGLIB 增强型控制器组件未自动装配
- java - 带有 testNG 资源和依赖项的 Java fatJar
- javascript - 使用输入字段中的数据填充确认/弹出框,并允许用户在 html 和 jquery 中进行编辑
- python - 运行 xgboost 算法给出编译错误