[英]Error while trying to rename downloaded pdf file in Python Selenium
我正在循环选项并基于 option.text 值,我正在尝试重命名我的 PDF 文件。 但是,我面临一个错误。
这是代码:
mySelect = Select(driver.find_element_by_id("childContextDDL"))
index=-1
for option in mySelect.options:
time.sleep(1)
index = index + 1
try:
dropdown = driver.find_element_by_id('lnkChangeChild')
dropdown.click()
dropdown1 = driver.find_element_by_class_name('k-select')
dropdown1.click()
driver.execute_script("document.getElementById('childContextDDL').style.display = 'block';")
mySelect1 = Select(driver.find_element_by_id("childContextDDL"))
mySelect1.select_by_index(index)
randomClick = driver.find_element_by_id('dcf-user-info')
randomClick.click()
exportLink = driver.find_element_by_link_text("Export")
exportLink.click()
driver.switch_to.window(driver.window_handles[1])
driver.execute_script("document.getElementById('dcf-user-info').style.display = 'none';")
time.sleep(1)
print = driver.find_element_by_link_text("Print")
print.click()
time.sleep(1)
driver.close()
driver.switch_to.window(driver.window_handles[0])
except:
mySelect.select_by_index(index)
randomClick = driver.find_element_by_id('dcf-user-info')
randomClick.click()
exportLink = driver.find_element_by_link_text("Export")
exportLink.click()
driver.switch_to.window(driver.window_handles[1])
driver.execute_script("document.getElementById('dcf-user-info').style.display = 'none';")
time.sleep(1)
print = driver.find_element_by_link_text("Print")
print.click()
filename = max(["C:\\Users\\xyz\\Downloads" + "\\" + f for f in os.listdir("C:\\Users\\xyz\\Downloads")],key=os.path.getctime)
time.sleep(1)
shutil.move(filename,os.path.join("C:\\Users\\xyz\\Downloads",'"' + option.text + '.pdf"'))
time.sleep(1)
driver.close()
driver.switch_to.window(driver.window_handles[0])
我在这条线上面临一个错误:
shutil.move(filename,os.path.join("C:\\Users\\xyz\\Downloads",'"' + option.text + '.pdf"'))
如果我将该行更改为此,它不会引发错误:
shutil.move(filename,os.path.join("C:\\Users\\xyz\\Downloads",r"ScoreCard.pdf"))
但我想根据选择的选项动态更改 PDF 文件的名称。
作为参考,以下是选项:
<select id="childContextDDL" data-filter="contains" data-role="dropdownlist" data-template="dcf-context-picker" data-value-field="Value" data-text-field="DisplayText" data-bind="events: { change: childContextListChange }, source: childContextList.ChildContextList" style="display: block;">
<option value="1">NATION</option>
<option value="12">ATLANTIC</option>
<option value="16">CHARLOTTE, NC
因此,对于 Nation,我想将文件重命名为 Nation.pdf,而对于 Atlantic,它将是 Atlantic.pdf 等。
让我知道我哪里出错了。
这是错误:
selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
这就是我的做法。
我首先使用了一个小的 for 循环,将 option.text 值附加到一个新列表中:
index=-1
names = []
for option in mySelect.options:
names.append(option.text)
print('names is: ',names)
然后在try and except中,我添加了这个:
filename = max(["C:\\Users\\parnal.patil\\Downloads" + "\\" + f for f in os.listdir("C:\\Users\\parnal.patil\\Downloads")],key=os.path.getctime)
shutil.move(filename,os.path.join("C:\\Users\\parnal.patil\\Downloads",'2021Q1_' + str(names[index]) + '.pdf'))
代码的 rest 原样。 我还在几个地方增加了 time.sleep 的持续时间,但这些都是微小的变化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.