zoukankan      html  css  js  c++  java
  • MY_使用selenium自动登录126/163邮箱并发送邮件

    转自:https://www.cnblogs.com/yin-tao/p/7244082.html

    我使用的是python2.7.13+selenium

    ps:几天之前,我曾多次尝试写这段代码,但是在点击写信的步骤时失败了,我想我的问题应该大致是这几点:

           1.写信按钮不能直接定位到,同时它的父目录id是动态的,我当时使用xpath定位到了这个动态的id,所以失败是必然的,那么就需要我们继续寻找向上寻找父目录,即多层级的xpath(建议多使用xpath/css)成功率会更高,因为层级越少,那么出现重复的可能越大(比如126写信中的主题的class和搜索框的class是一样的,当然还有很多)

           2.页面的加载未完全,导致元素未找到而出现错误,所以需要我用到显示和隐式等待

           3.同时要及时清除浏览器中的缓存,因为垃圾过多会导致浏览器运行变慢甚至崩溃

    好了,话有点多了,直接贴代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #coding:UTF-8
    import time
    from selenium.webdriver.common.keys import Keys
    from selenium import webdriver
     
    driver = webdriver.Chrome()
    driver.implicitly_wait(30)<br>#隐式等待,不影响用例执行速度<br>#如果登录时出现了验证码,可以将等待时长设置更长(如60),手动点击完成验证,并点击登录(ps:自动验证码很难,我感觉这种类型的验证码是其中的Boss)
    driver.get('http://mail.126.com/')
    driver.switch_to_frame('x-URS-iframe')<br>#登录页面存在iframe
    driver.find_element_by_name('email').clear()
    driver.find_element_by_name('email').send_keys('testingwtb')
    driver.find_element_by_name('password').send_keys('a123456', Keys.ENTER)
    time.sleep(6)<br>#跳转页面时,强制等待6s
    driver.find_element_by_xpath("//div[@id='dvNavTop']/ul/li[2]/span[2]").click()<br>#点击写信按钮
    time.sleep(2)
    driver.find_element_by_class_name('nui-editableAddr-ipt').send_keys('780720038@qq.com')<br>#收件人
    driver.find_element_by_xpath("//input[@class='nui-ipt-input' and @type='text' and @maxlength='256']").send_keys(u'测试')<br>#主题
    xpath = driver.find_element_by_xpath("//div[@class='APP-editor-edtr']/iframe")
    driver.switch_to_frame(xpath)<br>#文本内容在iframe中
    driver.find_element_by_xpath("//body[@class='nui-scroll' and @contenteditable='true']").send_keys(u'这是一个自动化测试邮件')
    driver.switch_to_default_content()<br>#发送按钮在iframe外,所以需要跳出
    driver.find_element_by_xpath("//div[@class='nui-toolbar-item']/div/span[2]").click()<br>#发送
  • 相关阅读:
    【题解】 bzoj1207: [HNOI2004]打鼹鼠 (动态规划)
    【题解】 bzoj1088: [SCOI2005]扫雷Mine (神奇的做法)
    【题解】 bzoj4472: [Jsoi2015]salesman (动态规划)
    【题解】 bzoj4033: [HAOI2015]树上染色* (动态规划)
    【题解】 [HNOI/AHOI2018]道路 (动态规划)
    炫酷的英文字体分享
    艾伦·麦席森·图灵
    历史上最知名的15位计算机科学家
    浏览器首页被改为2345之解决方法
    linux命令缩写及全称
  • 原文地址:https://www.cnblogs.com/xinxin1994/p/8999418.html
Copyright © 2011-2022 走看看