说明:学到这里,我们发现selenium的api有很多,我们如果全部记忆太过复杂,很多时候我们可以把常用的操作进行简单封装。
1、函数封装:是一种函数的功能,它把一个程序员写的一个或者多个功能通过函数、类的方式封装起来,对外只提供一个简单的函数接口。
2、对selenium的常用操作进行封装
- 封装开启关闭浏览器
- 封装定位操作
- 封装对元素的基本操作
3、 代码如下:
from time import sleep
from selenium import webdriver
#常用API的封装
class Common(object):
#初始化
def __init__(self):
#创建浏览器
self.driver=webdriver.Firefox()
#浏览器最大化
# self.driver.maximize_window()
#请求URL
def open_url(self,url):
self.driver.get(url)
self.driver.implicitly_wait(10)
#元素定位
def locateElement(self,locate_type,value):
el=None
if locate_type=='id':
el =self.driver.find_element_by_id(value)
elif locate_type=='name':
el =self.driver.find_element_by_name(value)
elif locate_type=='tag_name':
el =self.driver.find_element_by_tag_name(value)
elif locate_type=='class_name':
el =self.driver.find_element_by_class_name(value)
elif locate_type=='text':
el =self.driver.find_element_by_link_text(value)
elif locate_type=='partial':
el =self.driver.find_element_by_partial_link_text(value)
elif locate_type=='xpath':
el =self.driver.find_element_by_xpath(value)
elif locate_type=='css':
el =self.driver.find_element_by_css_selector(value)
#返回定位元素,才返回元素
if el is not None:
return el
#对点击元素的封装
def click(self,locate_type,value):
#调用locateElement(),在执行点击操作
el=self.locateElement(locate_type,value)
el.click()
#对定位元素进行文本输入
def input_data(self,locate_type,value,data):
# 调用locateElement(),在执行输入操作
el = self.locateElement(locate_type, value)
el.send_keys(data)
#获取定位到的元素中的文本内容
def get_text(self,locate_type,value):
# 调用locateElement(),在执行获取文本操作
el = self.locateElement(locate_type, value)
return el.text
#获取定位到的元素中的标签属性
def get_attribute(self, locate_type, value,data):
# 调用locateElement(),在执行获取标签属操作
el = self.locateElement(locate_type, value)
return el.get_attribute(data)
#结束的时候清理数据
def __del__(self):
sleep(3)
self.driver.quit()
#程序的入口
if __name__=='__main__':
com=Common()
com.open_url('https://www.baidu.com/')
com.input_data('css','#kw','百度一下')
com.__del__()
4、登录案例
from selenium封装 import Common
class Login(Common):
def login(self,user,password):
#打开京东网站
self.open_url("https://www.jd.com/")
#点击登录链接
self.click('css','.link-login')
#点击账户登录
self.click('css','.login-tab.login-tab-r>a')
#输入账号和密码
self.input_data('css','#loginname',user)
self.input_data('css','#nloginpwd',password)
if __name__ == '__main__':
login=Login()
login.login('dododod','123fjk')