提问人:Jay Cheng 提问时间:11/17/2023 更新时间:11/17/2023 访问量:20
Selenium 脚本在进入下一页时退出 while 循环
Selenium script exit the while loop when go into next page
问:
我正在尝试编写一个脚本来下载内部站点中所有可用的 pdf 和 excel 文件。
我现在的工作流程是:
步骤 1。转到网站并等待 excel 和 pdf 图标都可以单击
第2步。下载该页面中的所有 Excel 和 PDF 文件
第 3 步。然后转到下一页,重复上面的第 1 步到第 4 步,直到我遍历每一页
到目前为止,我可以下载第一页上的所有文件,浏览器确实转到第二页;但是,它会停止下载第二页上的文件并退出循环。
以下是我到目前为止编写的代码,如果有人能提供建议,那就太好了,因为我已经阅读了相当多的线程并在谷歌上搜索了几个小时,但无法弄清楚发生了什么。
page_count =1
print(page_count)
while True:
try:
wait = WebDriverWait(driver,10)
wait.until(EC.element_to_be_clickable((By.XPATH,'//div[@title="Download as PDF"]')))
wait.until(EC.element_to_be_clickable((By.XPATH,'//div[@title="Download as Excel"]')))
wait.until(EC.element_to_be_clickable((By.XPATH,'//div[@title="View Details"]')))
pdf_links = driver.find_elements(By.XPATH,'//div[@title="Download as PDF"]')
for i in range(len(pdf_links)):
print(pdf_links[i])
pdf_links[i].click()
select_all_box = WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,'//input[@controlid="selectAll"]/following-sibling::span'))).click()
submit_select_button = WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,'//button[@label="Submit"]'))).click()
time.sleep(2)
download_button = WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,'//button[@label="Download"]'))).click()
pdf_links = driver.find_elements(By.XPATH,'//div[@title="Download as PDF"]')
excel_links = driver.find_elements(By.XPATH,'//div[@title="Download as Excel"]')
for i in range(len(excel_links)):
print(excel_links[i])
excel_links[i].click()
time.sleep(3)
excel_links = driver.find_elements(By.XPATH,'//div[@title="Download as Excel"]')
next_page_button = WebDriverWait(driver,10).until(EC.presence_of_element_located((By.XPATH,'//button[@id="pagination-next-page"]'))).click()
# driver.execute_script("arguments[0].click();",next_page_button)
page_count+=1
time.sleep(50)
except:
print('exit')
break
答: 暂无答案
评论