Selenium APL的简单封装

说明:学到这里,我们发现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')

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

发布了172 篇原创文章 · 获赞 76 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/dpl12/article/details/103103835