Python自动化 利用Selenium模块 利用网页版邮件端恢复删除的邮件(企业邮箱为例)

Python自动化 利用Selenium模块 恢复网页版删除邮件

起因:邮件被误删,需要恢复,但是得很傻的需要自己一个一个点 恢复,此时就想到了自动化来实现。

学习目标:

学会使用工具 Selenium (一个极为强大且广泛使用的工具),掌握Selenium基础操作。

知识点

模块 链接 作用
selenium https://www.selenium.dev/zh-cn/documentation/ 支持 web 浏览器自动化的一系列工具和库的综合项目

 初始化webdriver

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from webdriver_manager.chrome import ChromeDriverManager


def init_driver(options=None) -> webdriver.Chrome:
    """
    初始化浏览器驱动.

    Args:
        options(Options): chrome配置选项

    Returns:
        driver(WebDriver): 浏览器驱动对象

    """
    return webdriver.Chrome(
        service=ChromeService(ChromeDriverManager().install()),
        options=options
    )

###
对其中的解释,可参阅https://peps.python.org/pep-3107/

上述的代码,selenium 和urlib的版本都是最新的,才需要用到service的代码行。(可参考上一篇笔记)。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options


options = Options()
wd = webdriver.Chrome(chrome_options=options, executable_path=r'c:\chromedriver\chromedriver.exe')

在爬网页时,用到最多的是各元素的xpath和网页代码。

显式等待时间

优势:确保任务在特定条件满足时执行,提高任务的稳定性和可靠性。
作用:适用于等待页面的特定条件满足,如元素可见或可点击。
应用场景:处理动态加载的页面内容。
注意事项:在需要等待特定条件满足时使用显式等待。设置合理的等待时间,以避免任务失败或效率低下。

wd.get("url")
wd.find_element_by_link_text("其他方式登录").click()
wd.implicitly_wait(3)
xpath_element_value = wd.find_element_by_xpath('//*[@id="loginForm"]/div[3]/div[2]/div[1]/div[3]/a[4]')
xpath_element_value.click()
xpath_element_value = wd.find_element_by_xpath('//*[@id="inputuin"]').send_keys('')
xpath_element_value = wd.find_element_by_xpath('//*[@id="pp"]').send_keys(" ")
wd.implicitly_wait(1)
xpath_element_value = wd.find_element_by_xpath('//*[@id="btlogin"]').click()
wd.implicitly_wait(1)
xpath_element_value = wd.find_element_by_xpath('//*[@id="SetInfo"]/div[1]/a[1]').click()
wd.implicitly_wait(2)

##import time
time.sleep(10)

登录网页之后,则需要对mainFrame 有个认识,我开始还是一直在寻找xpath的方式。

## Need read iframe html
wd.switch_to.frame('mainFrame')
xpath_element_value = wd.find_element_by_xpath('/html/body/table/tbody/tr/td[5]/a/b').click()

 逻辑分析上:

对邮件恢复进行循环处理。(此时在for 和while 进行选择)

active = True
while active:
    try:
        wd.implicitly_wait(5)
        xpath_element_value = wd.find_element_by_xpath('//*[@id="div_data"]/div[2]/table/tbody/tr[4]/td[4]/a').click()
        wd.implicitly_wait(1)
        # element_by_id = wd.find_element_by_id("QMconfirm_s_confirm")
        # element_by_id.click()
        whandle = wd.window_handles[0]
        wd.switch_to.window(whandle)
        xpath_element_value = wd.find_element_by_xpath('//*[@id="QMconfirm_s_confirm"]')
        xpath_element_value.click()
        time.sleep(3)
        wd.switch_to.frame('mainFrame')
    except:
    # print(xpath_element_value)
        active = False

直到没有恢复按键需要点击 ,退出即可。

wd.quit()

遗留问题:

需要爬出 所恢复出来的邮件的时间,发件人和主题,求指导。

你可能感兴趣的:(Python,自动化,selenium,运维)