python - Selenium 为不同的选项卡下载相同的文件
问题描述
我正在做一个自动化项目。在那,我正在从不同选项卡下的网页下载报告文件。我在使用 for 循环时一个一个地单击每个选项卡。单击每个报告选项卡的逻辑工作正常。但是对于每次点击,它每次都会下载第一份报告。
例如,总共有 5 个选项卡,这意味着我必须一个一个地单击 5 个选项卡才能下载每个报告。我的逻辑单击 for-loop 下的每个选项卡,但下载的文件只是第一个选项卡中的第一个报告文件。所以,我下载了 5 个报告文件,但都是一样的。
以下是我的功能:
def reports_with_tab_iteration(mstr_id, report_name):
time.sleep(random.randint(2, 3))
driver.switch_to.window(driver.window_handles[1])
time.sleep(random.randint(1, 2))
table_row = WebDriverWait(driver, 20).until(
EC.presence_of_all_elements_located((By.XPATH, '//table[@class="mstrmojo-ListBox-table"]/tbody/tr/td'))
)
old_len = 0
for td_11 in range(len(table_row)):
driver.execute_script("location.reload(true);")
time.sleep(random.randint(20, 25))
table_row = WebDriverWait(driver, 20).until(
EC.presence_of_all_elements_located((By.XPATH, '//table[@class="mstrmojo-ListBox-table"]/tbody/tr/td'))
)
td = table_row[td_11]
# print(td_)
td.click()
# driver.execute_script("arguments[0].click();",td)
time.sleep(random.randint(5, 10))
"""New Block Starts"""
try:
drop_down = WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located(
(By.XPATH, '//div[@class="mstrmojo-Button mstrmojo-oivmSprite tbDown"]')))
time.sleep(10)
if drop_down != None:
print("new_len: ", len(drop_down))
new_len = len(drop_down)
index = new_len - old_len
print("index: ", index)
new_drp_dwn = drop_down[-(index):]
# print("/"*40)
# print("Actuall Drop Down List")
# print(drop_down)
# print("/"*40)
print("New Drop Down List")
print(new_drp_dwn)
print("new_drop_down: ", len(new_drp_dwn))
old_len = new_len
print("old_len: ", old_len)
time.sleep(5)
driver.execute_script("arguments[0].click();", WebDriverWait(driver, 20).until(
EC.presence_of_element_located(
(By.XPATH, '//div[@class="mstrmojo-Button mstrmojo-oivmSprite tbDown"]'))))
print("single elem clicked")
time.sleep(random.randint(3, 5))
driver.execute_script("arguments[0].click();", WebDriverWait(driver, 20).until(
EC.presence_of_element_located((By.XPATH, '//td[text() = "Export to Excel"]'))))
time.sleep(random.randint(5, 10))
driver.switch_to.window(driver.window_handles[2])
time.sleep(random.randint(5, 10))
print("Downloading Complete!!!!!")
driver.close()
driver.switch_to.window(driver.window_handles[1])
time.sleep(random.randint(5, 10))
else:
print("No drop down")
except TimeoutException:
print("no drop down")
我没有得到,我做错了什么。
解决方案
推荐阅读
- node.js - 画布拉伸图像
- java - 抽象超类可以在运行时检查自身的实例(以确定子类)吗?
- python - 我可以用这些字符组成什么词?
- python - 如何从共现(二元组)计数列表中训练 gensim 中的 word2vec?
- reactjs - React child :如果您打算渲染一组子项,请改用数组
- keras - Keras 中的仅偏置层
- python - Django 模板不会加载,但 HttpResponse 会(重新发布)
- .net - 从 .NET 4.5 迁移到 4.6 会产生问题“ReferencePath”未定义元数据“CopyLocal”的值
- javascript - 接收未捕获的类型错误:无法读取未定义的属性“fn”和类型错误 $(...).daterangepicker 不是 Webpack Rails 6 的函数
- text - Lua TextLabel 文本更改脚本 ROBLOX