• 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())
  • 相关阅读:
    spring bean的作用域
    Web前端开发CSS规范总结
    前端技术都包含哪些?
    Web安全常见问题及解决方法
    如何让手游更省带宽,耗电量更少?TBR渲染架构解析!
    新手学Java,有哪些入门知识点?
    如何让手游内存占用更小?从内存消耗iOS实时统计开始
    动作游戏老是卡?试试从这些方面提升流畅度
    开发者必知!2020年大前端发展趋势解读
    游戏编程入门! 想成为专业的游戏开发程序员需要掌握哪些?
  • 原文地址:https://www.cnblogs.com/will-wu/p/13496876.html
Copyright © 2020-2023  润新知