selenium基础类封装及调用(python)

# coding=utf-8 #
__author__ = '爱吃苹果的鱼'

import time
from logger import logger
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec


class SeleniumActionAPI:
    '''selenium封装类'''

    def __init__(self, driver):
        '''web driver 初始化,引用类时的入参'''
        self.driver = driver

    def iframe_switch_to_default(self):
        '''iframe切换'''
        self.driver.driver.switch_to.default_content()
    
    def iframe_switch(self, iframe_id_or_name):
        '''iframe切换至指定iframe(id/name)'''
        self.driver.switch_to.frame(iframe_id_or_name)

    def ele_list_get_by_id(self, ele_id):
        '''通过元素id,获取元素列表'''
        return self.driver.find_elements_by_id(ele_id)

    def ele_list_get_by_name(self, name):
        '''通过元素name,获取元素列表'''
        return self.driver.find_elements_by_name(name)

    def ele_list_get_by_xpath(self, xpath):
        '''通过元素xpath路径,获取元素列表'''
        return self.driver.find_elements_by_xpath(xpath)

    def ele_list_get_by_css_selector(self, css_selector):
        '''通过元素class属性,获取元素列表'''
        return self.driver.find_elements_by_css_selector(css_selector)

    def ele_list_get_by_class_name(self, class_name):
        '''通过元素class name,获取元素列表'''
        return self.driver.find_elements_by_class_name(class_name)

    def ele_list_get_by_link_text(self, link_text):
        '''通过元素链接文本,获取元素列表'''
        return self.driver.find_elements_by_link_text(link_text)

    def ele_list_get_by_partial_link_text(self, partial_link_text):
        '''通过元素部分链接文本,获取元素列表'''
        return self.driver.find_elements_by_partial_link_text(partial_link_text)

    def ele_list_get_by_accessibility_id(self, accessibility_id):
        '''通过元素accessibility id,获取元素列表'''
        return self.driver.find_elements_by_accessibility_id(accessibility_id)

    def ele_list_get_by__android_uiautomator(self, uia_string):
        '''通过元素uia字符串,获取元素列表'''
        return self.driver.find_elements_by_android_uiautomator(uia_string)

    def ele_list_get_by_andriod_viewtag(self, viewtag):
        '''通过元素viewtag,获取元素列表'''
        return self.driver.find_elements_by_android_viewtag(viewtag)

    def ele_list_get_by_custom(self, selector):
        return self.driver.find_elements_by_custom(selector)

    def ele_list_get_by_tag_name(self, tag_name):
        '''通过元素tag name,获取元素列表'''
        return self.driver.find_elements_by_tag_name(tag_name)

    def ele_display_chk(self, locator):
        '''元素加载,最多等待5s,5s仍未加载完成时,报错'''
        WebDriverWait(self.driver, 5, 0.5).until(ec.presence_of_element_located(locator))

    def ele_get_by_id(self, ele_id):
        '''通过元素id,获取元素'''
        return self.driver.find_element_by_id(ele_id)

    def ele_get_by_name(self, name):
        '''通过元素name,获取元素'''
        return self.driver.find_element_by_name(name)

    def ele_get_by_xpath(self, xpath):
        '''通过元素xpath,获取元素'''
        return self.driver.find_element_by_xpath(xpath)

    def ele_get_by_css_selector(self, css_selector):
        '''通过元素class属性,获取元素'''
        return self.driver.find_element_by_css_selector(css_selector)

    def ele_get_by_class_name(self, class_name):
        '''通过元素class name,获取元素'''
        return self.driver.find_element_by_class_name(class_name)

    def ele_get_by_link_text(self, link_text):
        '''通过元素链接文本,获取元素'''
        return self.driver.find_element_by_link_text(link_text)

    def ele_get_by_partial_link_text(self, partial_link_text):
        '''通过元素部分链接文本,获取元素'''
        return self.driver.find_element_by_partial_link_text(partial_link_text)

    def ele_get_by_accessibility_id(self, accessibility_id):
        '''通过元素accessibility id,获取元素'''
        return self.driver.find_element_by_accessibility_id(accessibility_id)

    def ele_get_by__android_uiautomator(self, uia_string):
        return self.driver.find_element_by_android_uiautomator(uia_string)

    def ele_get_by_andriod_viewtag(self, viewtag):
        return self.driver.find_element_by_android_viewtag(viewtag)

    def ele_get_by_custom(self, selector):
        return self.driver.find_element_by_custom(selector)

    def ele_get_by_tag_name(self, tag_name):
        '''通过元素tag name,获取元素'''
        return self.driver.find_element_by_tag_name(tag_name)

    def ele_click_by_id(self, ele_id):
        '''通过元素id,获取元素,然后触发点击事件'''
        ele_text = self.driver.find_element_by_id(ele_id).text
        self.driver.find_element_by_id(ele_id).click()
        logger.info("点击'" + ele_text + "'")

    def ele_click_by_name(self, name):
        '''通过元素name,获取元素,然后触发点击事件'''
        ele_text = self.driver.find_element_by_name(name).text
        self.driver.find_element_by_name(name).click()
        logger.info("点击'" + ele_text + "'")

    def ele_click_by_xpath(self, xpath):
        '''通过元素xpath,获取元素,然后触发点击事件'''
        ele_text = self.driver.find_element_by_xpath(xpath).text
        self.driver.find_element_by_xpath(xpath).click()
        logger.info("点击'" + ele_text + "'")

    def ele_click_by_css_selector(self, css_selector):
        '''通过元素class属性,获取元素,然后触发点击事件'''
        ele_text = self.driver.find_element_by_css_selector(css_selector).text
        self.driver.find_element_by_css_selector(css_selector).click()
        logger.info("点击'" + ele_text + "'")

    def ele_click_by_class_name(self, class_name):
        '''通过元素class name,获取元素,然后触发点击事件'''
        ele_text = self.driver.find_element_by_class_name(class_name).text
        self.driver.find_element_by_class_name(class_name).click()
        logger.info("点击'" + ele_text + "'")

    def ele_click_by_link_text(self, link_text):
        '''通过元素链接文本,获取元素,然后触发点击事件'''
        ele_text = self.driver.find_element_by_link_text(link_text).text
        self.driver.find_element_by_link_text(link_text).click()
        logger.info("点击'" + ele_text + "'")

    def ele_click_by_partial_link_text(self, partial_link_text):
        '''通过元素部分链接文本,获取元素,然后触发点击事件'''
        ele_text = self.driver.find_element_by_partial_link_text(partial_link_text).text
        self.driver.find_element_by_partial_link_text(partial_link_text).click()
        logger.info("点击'" + ele_text + "'")

    def ele_click_by_accessibility_id(self, accessibility_id):
        '''通过元素accessibility id,获取元素,然后触发点击事件'''
        ele_text = self.driver.find_element_by_accessibility_id(accessibility_id).text
        self.driver.find_element_by_accessibility_id(accessibility_id).click()
        logger.info("点击'" + ele_text + "'")

    def ele_click_by__android_uiautomator(self, uia_string):
        ele_text = self.driver.find_element_by_android_uiautomator(uia_string).text
        self.driver.find_element_by_android_uiautomator(uia_string).click()
        logger.info("点击'" + ele_text + "'")

    def ele_click_by_andriod_viewtag(self, viewtag):
        ele_text = self.driver.find_element_by_android_viewtag(viewtag).text
        self.driver.find_element_by_android_viewtag(viewtag).click()
        logger.info("点击'" + ele_text + "'")

    def ele_click_by_custom(self, selector):
        ele_text = self.driver.find_element_by_custom(selector).text
        self.driver.find_element_by_custom(selector).click()
        logger.info("点击'" + ele_text + "'")

    def ele_click_by_tag_name(self, tag_name):
        '''通过元素tag name,获取元素,然后触发点击事件'''
        ele_text = self.driver.find_elements_by_tag_name(tag_name).text
        self.driver.find_elements_by_tag_name(tag_name).click()
        logger.info("点击'" + ele_text + "'")

    def alert_text_get(self):
        '''获取alert弹窗文本内容'''
        logger.info("Alert text='" + self.driver.switch_to_alert().text + "'")
        return self.driver.switch_to_alert().text

    def alert_accept(self):
        '''alert弹窗时,确认'''
        logger.info("Accept alert")
        self.driver.switch_to_alert().accept()

    def alert_dismiss(self):
        '''alert弹窗时,点击【否/取消等】关闭窗口'''
        logger.info("Dismiss alert")
        self.driver.switch_to_alert().dismiss()

    @staticmethod
    def ele_send_keys(ele, text):
        '''文本框传值'''
        logger.info("文本框传值'" + text + "'")
        ele.send_keys(text)

    @staticmethod
    def ele_clear(ele):
        '''清除文本框内容'''
        logger.info("清空文本框")
        ele.clear()

    def swipe_left(self, swipe_times=1):
        '''app中向左滑动,可指定滑动次数'''
        logger.info("向左滑动" + str(swipe_times) + "次")
        size = self.driver.get_window_size()
        width = size["width"]
        height = size["height"]
        for i in range(0, swipe_times):
            self.driver.swipe(width*0.8, height*0.5, width*0.2, height*0.5, duration=800)
            # time.sleep(1)

    def swipe_right(self, swipe_times=1):
        '''app中向右滑动,可指定滑动次数'''
        logger.info("向右滑动" + str(swipe_times) + "次")
        size = self.driver.get_window_size()
        width = size["width"]
        height = size["height"]
        for i in range(0, swipe_times):
            self.driver.swipe(width*0.2, height*0.5, width*0.8, height*0.5)
            time.sleep(1)

    def swipe_up(self, swipe_times=1):
        '''app中向上滑动,可指定滑动次数'''
        logger.info("向上滑动" + str(swipe_times) + "次")
        size = self.driver.get_window_size()
        width = size["width"]
        height = size["height"]
        for i in range(0, swipe_times):
            self.driver.swipe(width*0.5, height*0.8, width*0.5, height*0.2)
            time.sleep(1)

    def swipe_down(self, swipe_times=1):
        '''app中向下滑动,可指定滑动次数'''
        logger.info("向下滑动" + str(swipe_times) + "次")
        size = self.driver.get_window_size()
        width = size["width"]
        height = size["height"]
        for i in range(0, swipe_times):
            self.driver.swipe(width*0.5, height*0.2, width*0.5, height*0.8)
            time.sleep(1)

driver可根据实际请求定义为web或app

from framework.base import seleniumAction                     #seleniumAction封装类引用
from selenium import webdriver
import time
                                                              #driver所在路径
driverPath = 'C:\\Users\\Administrator\\PycharmProjects\\pyTestAutomation\\framework\\driver\\chromedriver.exe'
driver = webdriver.Chrome(executable_path=driverPath)


driver.get('https://www.baidu.com')                           #打开百度链接
base = seleniumAction.SeleniumActionAPI(driver)               #初始化selenium封装类
search_input = base.ele_get_by_id('kw')                       #获取检索输入框元素
base.ele_send_keys(search_input, 'selenium')                  #输入框中,输入'selenium'
base.ele_click_by_id('su')                                    #点击【百度一下】搜索按钮
time.sleep(3)         

执行输出:

Connected to pydev debugger (build 182.4505.26)
C:\Users\Administrator\PycharmProjects\pyTestAutomation\framework\driver\chromedriver.exe
[13/May/2020 21:01:32] INFO - 文本框传值'selenium'
[13/May/2020 21:02:04] INFO - 点击''

Process finished with exit code 0
  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值