首页 > 解决方案 > 使用 selenium 不断检查是否有新电子邮件到达

问题描述

我想监控我的雅虎邮件并检查是否有新邮件到达我的收件箱。为此,我必须刷新页面(比如每 60 秒)并检查是否有新电子邮件。我想不出比这更好的了:

try:
    search = WebDriverWait(driver, 604800).until(EC.presence_of_element_located((By.CSS_SELECTOR, f'#mail-app-component > div > div > div.D_F.ab_FT.em_N.ek_BB.iz_A.H_6D6F > div > div > div.W_6D6F.H_6D6F.cZ1RN91d_n.o_h.p_R.em_N.D_F > div > div.p_R.Z_0.iy_h.iz_A.W_6D6F.H_6D6F.k_w.em_N.c22hqzz_GN > ul > li:nth-child({4}) > a')))
    while True:
        driver.refresh()
except:
    print('no')
    driver.quit()

我将搜索变量放入尝试中,以检测我的收件箱中是否有新电子邮件(雅虎上的 css 网络元素相同。它们仅相差一个数字,表示我收到的第 (n-1) 封电子邮件)和我希望页面每 60 秒刷新一次并再次检查新电子邮件。我怎样才能做到这一点?

标签: pythonseleniumautomation

解决方案


事实证明这并不难。

while True:
    n = 4
    try:
        search = WebDriverWait(driver, 60).until(EC.presence_of_element_located((By.CSS_SELECTOR, f'#mail-app-component > div > div > div.D_F.ab_FT.em_N.ek_BB.iz_A.H_6D6F > div > div > div.W_6D6F.H_6D6F.cZ1RN91d_n.o_h.p_R.em_N.D_F > div > div.p_R.Z_0.iy_h.iz_A.W_6D6F.H_6D6F.k_w.em_N.c22hqzz_GN > ul > li:nth-child({n}) > a')))
        
        n+=1
    except:
        driver.refresh()

推荐阅读