Selenium 脚本在进入下一页时退出 while 循环

Selenium script exit the while loop when go into next page

提问人:Jay Cheng 提问时间:11/17/2023 更新时间:11/17/2023 访问量:20

问:

我正在尝试编写一个脚本来下载内部站点中所有可用的 pdf 和 excel 文件。

我现在的工作流程是:

步骤 1。转到网站并等待 excel 和 pdf 图标都可以单击

excel and pdf icon

pdf excel dom

第2步。下载该页面中的所有 Excel 和 PDF 文件

第 3 步。然后转到下一页,重复上面的第 1 步到第 4 步,直到我遍历每一页

next page button next page dom

到目前为止,我可以下载第一页上的所有文件,浏览器确实转到第二页;但是,它会停止下载第二页上的文件并退出循环。

2nd page

以下是我到目前为止编写的代码,如果有人能提供建议,那就太好了,因为我已经阅读了相当多的线程并在谷歌上搜索了几个小时,但无法弄清楚发生了什么。

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
python selenium-webdriver while-循环

评论


答: 暂无答案