需求:遍历QQ邮箱的在线文档并下载
关于QQ邮箱自动登录的问题可以参考:python实现滑动验证
在这里插入图片描述审查一下元素,这一块也就是我们所需要的文件列表:
在这里插入图片描述

文件列表的xpath:/html/body/div[2]/div/div[2]/div[2]/div[2]/ul
每个文件的xpath:/html/body/div[2]/div/div[2]/div[2]/div[2]/ul/li[i]

在这里插入图片描述这个就是下载按钮的页面元素!
直接上代码:


def download_onlinedoc():
    global browser
    onlinedoc_button=browser.find_element_by_id('folder_onlinedoc_td')
    onlinedoc_button.click()
    time.sleep(2)
    browser.switch_to.frame('mainFrame')
    current_url1=browser.current_url
    print("进入第一层框架:",current_url1)
    time.sleep(2)
    browser.switch_to.frame('onlineDoc_detail_iframe')
    current_url2 = browser.current_url
    print("进入第二层框架:", current_url2)
    time.sleep(2)
    docList=browser.find_element_by_class_name('index_docList')
    alldocs=docList.find_elements_by_class_name('index_docItem')
    print("一共含有{}个文件".format(len(alldocs)))
    for x in alldocs:
        print(x)
        opreations=x.find_element_by_class_name("index_docItem_operation")
        opreations.click()
        time.sleep(2)
        menus=opreations.find_element_by_class_name('od_dropdownMenu')
        menusidd=menus.find_element_by_id('menu')
        dowload_button=menusidd.find_element_by_class_name('od_dropdownMenu_item.od_tipsBubbleWrap')
        dowload_button.click()
        # pyautogui.hotkey('down')
        pyautogui.hotkey('enter')
        time,sleep(2)
        pyautogui.click(250,600)
    browser.refresh()
    time.sleep(5)

注意:
**1.alldocs=docList.find_elements_by_class_name(‘index_docItem’)获取文件列表,得到一个list
2.嵌套元素元素需要一层一层的获取,不能跨层获取,不熟悉的话可以用xpath来理一下
3.网页元素会变动(比如点击按钮出现新的下拉框),获取到哪一层就前进到那层并使用find_element_xxx定位,不要提前点开,否则可能会出错!**比如下面这个:
在这里插入图片描述
最右边的那个元素:

class=“index_docItem_operation”

但是点击之后就变了:

class=“index_docItem_operation index_docItem_operation_BottomShow”

在这里插入图片描述使用下面这个就会找不到元素!
个人踩坑记录,欢迎交流讨论!

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐