Selenium学习二——自动登陆163邮箱并发送邮件

来源:互联网 发布:淘宝网小众女鞋店 编辑:程序博客网 时间:2024/05/16 07:16

Selenium学习二——自动登陆163邮箱并发送邮件


编程过程中遇到的问题就是元素定位不到,因为id的值是每次登陆是会变化的,所以用css_selector的多层模式去定位元素。


如发送按钮:

网页源码:


利用css_selector定位:

driver.find_element_by_css_selector(“div[@id^='_mail_button_2']>span.nui-btn-text”)


^用于匹配一个前缀,$用于匹配一个后缀,*用于匹配任意字符


#coding:utf-8from selenium import webdriverimport timedriver = webdriver.Chrome()url = "http://mail.163.com/"driver.get(url)time.sleep(2)#跳转到登陆frameelement = driver.find_element_by_id("x-URS-iframe")driver.switch_to.frame(element)time.sleep(2)#登陆邮箱driver.find_element_by_name("email").send_keys("xxx")driver.find_element_by_name("password").send_keys("xxx")time.sleep(2)driver.find_element_by_id("dologin").click()time.sleep(6)print "login in"#点击写信driver.find_element_by_xpath(".//*[@id='_mail_component_68_68']").click()print "click ok"time.sleep(6)#写入发送人和邮件主题driver.find_element_by_class_name('nui-editableAddr-ipt').send_keys("xxx")time.sleep(3)driver.find_element_by_css_selector("div[id^='_mail_input_2']>input.nui-ipt-input").send_keys("selenium")#编写邮件内容,首先切换frameframe = driver.find_element_by_class_name("APP-editor-iframe")driver.switch_to.frame(frame)driver.find_element_by_class_name("nui-scroll").send_keys("xxx")#返回上一层framedriver.switch_to.default_content()time.sleep(6)#点击发送邮件driver.find_element_by_css_selector("div[id^='_mail_button_2']>span.nui-btn-text").click()

注意:写邮件时,要先切换frame到邮件内容的frame,最后切换回来,再点击发送。