元素定位方式,返回by类型,辅助ReadyamlToElement类

# -*- coding:utf-8 -*-
# date = 2019/7/25
# name = "yedeng"
# project_name = gddn-ui-selenium
# explain :元素定位方式说明,用于返回By类型
import sys
from utils.log import Log
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By


class FindBy:
    def __init__(self, Type):
        """
        用于返回loaction元组的by类型
        :param Type: yaml文件的Type值
        """
        self.__Type = Type
    # 定义查找元素

    def find_by(self) -> By:
        """
        通过'id', 'name', 'class', 'tag', 'link', 'plink', 'css', 'xpath'查找相应的locationby
        :rtype locationby : selenium.webdriver.common.by.By
        :return locationby 对应的location元组的By的值
        """
        """定位元素"""
        by = self.__Type
        locationby = None
        if by in ['id', 'name', 'class', 'tag', 'link', 'plink', 'css', 'xpath']:

            try:
                if by == 'id':
                    locationby = By.ID
                elif by == 'name':
                    locationby = By.NAME
                elif by == 'class':
                    locationby = By.CLASS_NAME
                elif by == 'tag':
                    locationby = By.TAG_NAME
                elif by == 'link':
                    locationby = By.LINK_TEXT
                elif by == 'plink':
                    locationby = By.PARTIAL_LINK_TEXT
                elif by == 'css':
                    locationby = By.CSS_SELECTOR
                elif by == 'xpath':
                    locationby = By.XPATH
                else:
                    Log.error("没有找到对应元素Type类型,请使用'id', 'name', 'class', 'tag', 'link', 'plink', 'css', 'xpath'")
                # Log.info('元素定位成功。定位方式:%s,使用的值%s:' % (by, value))
                return locationby
            except NoSuchElementException as e:
                # print("no suceelement")
                method = sys._getframe(1).f_code.co_name  # 调用该函数的函数名字,如果没有被调用,则返回<module>
                path = sys._getframe(1).f_code.co_filename  # 调用该函数的文件名字,如果没有被调用,则返回<module>
                Log.error("在执行【" + path + "】文件中的【" + method + "】方法时出现错误" + "没有找到对应的元素" + e.__str__())

        else:
            # print("输入的元素定位方式错误")
            Log.error("输入的元素定位方式错误,请使用'id', 'name', 'class', 'tag', 'link', 'plink', 'css', 'xpath'")


猜你喜欢

转载自blog.51cto.com/11463754/2452153