selenium之简单操作的封装(浏览器、定位方式、点击输入等)

1、为避免代码冗余,把selenium的部分操作简单的封装起来,封装起来后,一些需要几步才能完成的动作只需要一步即可

  浏览器的开启关闭封装

  访问地址(访问后默认隐式等待)封装

  定位方式的封装

  单击操作封装

  输入框输入封装

  获取指定元素的文本内容封装

from selenium import webdriver
import time
# 定义一个封装selenium 的各种方法的类(方便以面向对象的方式写脚本)
class My_se_package(object):
    # 构造方法
    def __init__(self,brower):
        '''初始化浏览器对象'''
        # 根据传入的参数创建对应的浏览器对象(相关浏览器已正确安装驱动)
        if brower == 'Firefox':
            # 创建浏览器
            self.driver = webdriver.Firefox()
        elif brower == 'Chrome':
            self.driver = webdriver.Chrome()
         # 默认最大化
        self.driver.maximize_window()

    # 访问地址
    def open_url(self,url):
        # 访问url
        self.driver.get(url)
        # 默认隐式等待10
        self.driver.implicitly_wait(10)

    # 封装八种定位方式
    def element_location(self,locate_type,locate_value):
        el = None
        if locate_type == 'id':
            el = self.driver.find_element_by_id(locate_value)
        elif locate_type == 'name':
            el = self.driver.find_element_by_name(locate_value)
        elif locate_type == 'class_name':
            el = self.driver.find_element_by_class_name(locate_value)
        elif locate_type == 'tag_name':
            el = self.driver.find_element_by_tag_name(locate_value)
        elif locate_type == 'link_text':
            el = self.driver.find_element_by_link_text(locate_value)
        elif locate_type == 'partial_link_text':
            el = self.driver.find_element_by_partial_link_text(locate_value)
        elif locate_type == 'xpath':
            el = self.driver.find_element_by_xpath(locate_value)
        elif locate_type == 'css':
            el = self.driver.find_element_by_css_selector(locate_value)
        # 如果el不为None,则返回
        if el is not None:
            return el

    # 指定某一个元素进行点击操作
    def click_element(self,locate_type,locate_value):
        # 调用定位方法,定位指定的元素
        el = self.element_location(locate_type,locate_value)
        # 点击操作
        el.click()
        time.sleep(1)

    # 指定元素进行输入
    def input_element(self,locate_type,locate_value,input_value):
        # 调用定位方法,指定元素进行定位
        el = self.element_location(locate_type,locate_value)
        # 输入操作
        el.send_keys(input_value)
        time.sleep(1)

    # 获取指定元素的文本内容
    def text_element(self,locate_type,locate_value):
        # 调用定位方法定位指定元素
        el = self.element_location(locate_type,locate_value)
        # 获取文本内容
        return el.text

    # 关闭本脚本打开的窗口
    def close_brower(self):
        # 关闭所有本脚本打开的窗口
        self.driver.quit()

    # 结束时自动清理所有变量,关闭所有窗口
    def __del__(self):
        # 关闭浏览器
        time.sleep(2)
        self.driver.quit()

if __name__ == '__main__':
    b = My_se_package('Firefox')
    b.open_url('http://www.baidu.com')
    # b.open_url('https://www.jd.com/')
    b.input_element('id','kw','英雄')
    b.click_element('id','su')
    b.driver.back()
    print(b.text_element('css','li.hotsearch-item:nth-child(2) > a:nth-child(1) > span:nth-child(2)'))
    print(b.driver.get_window_size())

 

posted @ 2020-08-13 15:52  吾言!  阅读(2137)  评论(1编辑  收藏  举报