python3 selenium 网易126邮箱自动化登录

首先新建一个 wyEmailLoginPublic.py 文件 用来定义一个登录类

from selenium import webdriver
import time
class Login_In():'''登录类封装'''def __init__(self,driver):self.driver = driverdef open_url(self):'''打开登录的url'''url = 'https://mail.126.com/'self.driver.get(url)time.sleep(2)self.driver.maximize_window()time.sleep(3)def user_pwd_login(self):'''点击密码登录按钮。切换到账号密码登录'''self.driver.find_element_by_id('lbNormal').click()def login(self,username,pwd):'''注意iframe,因为是动态的id所以通过xpath去定位'''self.driver.switch_to.frame(self.driver.find_element_by_xpath("//iframe[starts-with(@id,'x-URS-iframe')]"))self.driver.find_element_by_name('email').send_keys(username)self.driver.find_element_by_name('password').send_keys(pwd)self.driver.find_element_by_id('dologin').click()def close_browser(self):'''退出浏览器'''self.driver.quit()def all_actions(self,username,pwd):'''全部方法封装到一个方法里'''self.open_url()self.user_pwd_login()  #点击切换到账号密码登录self.login(username,pwd)self.close_browser()

然后创建一个wyEmaillogin.py文件调用登录类

from selenium import webdriver
from common.wyEmailLoginPublic import Login_In
import timedriver = webdriver.Chrome()'''
a = Login_In(driver)  #实例化
a.open_url()
a.user_pwd_login()
a.login('1150730480','111111')
a.close_browser()
'''
#一步步调用太麻烦,使用action_all 方法
a = Login_In(driver)
a.all_actions('1150730480','11111')

上面的元素定位写的太多了,可以试着把元素定位,send_keys(),click()封装在一个类里面
新建一个base.py文件

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
import time
from selenium.webdriver.common.by import Byclass Base():def __init__(self,driver):self.driver = driverself.timeout = 10self.t = 0.5def findElement(self,locator):'''这里用的是显示等待的元素定位'''ele = WebDriverWait(self.driver, self.timeout, self.t).until(lambda x: x.find_element(*locator))return eledef sendKeys(self,locator,text):'''输入文本的方法:首先定位到输入框,然后输入text'''ele = self.findElement(locator)ele.send_keys(text)def click(self,locator):'''点击的方法'''ele = self.findElement(locator)ele.click()def closeBrowser(self):self.driver.quit()
#调试一下
if __name__ == "__main__":driver = webdriver.Chrome()driver.maximize_window()driver.get("https://mail.126.com/")log = Base(driver) #初始化loc1 = ('id', 'lbNormal')log.click(loc1)

然后新建一个 .py的文件引用

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from base import Base
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://mail.126.com/")Log = Base(driver)loc1 = ('id', 'lbNormal')
loc2 = ('name', 'email')
loc3 = ('name', 'password')
loc4 = ('id', 'dologin')Log.click(loc1)
driver.switch_to.frame(driver.find_element_by_xpath("//iframe[starts-with(@id,'x-URS-iframe')]"))
Log.sendKeys(loc2,'1150730480')
Log.sendKeys(loc3,'111111')
Log.click(loc4)
Log.closeBrowser()

上面的是否可以考虑把所有方封装在一个方法里调用以后学习了再优化


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部