如何通过by定位元素辅助ReadyamlToElement类使用
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,如何通过by定位元素辅助ReadyamlToElement类使用?这篇文章运用了实例代码展示,代码非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。# -*- coding:utf-8 -*
千家信息网最后更新 2026年11月01日如何通过by定位元素辅助ReadyamlToElement类使用
如何通过by定位元素辅助ReadyamlToElement类使用?这篇文章运用了实例代码展示,代码非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
# -*- coding:utf-8 -*-# date = 2019/5/13# name = "yedeng"# project_name = python# explain : WebElement元素定位,给GetelementFromYaml使用import inspect, osfrom utils.log import Logfrom selenium.common.exceptions import NoSuchElementExceptionfrom selenium.webdriver.remote import webelementdef get_current_function_name(): return inspect.stack()[1][3]'''验证输入的文件是否存在,有待改进'''class Getyamlfile: def file_name(self, file_dir): list_dirs = os.listdir(file_dir) # 遍历指定目录下的所有文件名 yamlfile = ((os.path.split(__file__)[-1].split(".")[0]) + ".yaml") # 当前的py文件名+.yaml # print("现在" + (sys._getframe().f_code.co_filename).split('.')[0]) if yamlfile in list_dirs: return yamlfile else: return None""" 通过key获取到对应的elemet 改进设想:将yaml文件先全部转化为对应的webelement类型 key:WebElement 预计会出现的问题:1.页面未加载完,2.通过点击页面元素才出现的元素 3.frame标签 这些可能会定位不到 待验证"""class FindWebElement: def __init__(self, driver, Type, Value): """ :type driver: selenium.webdriver.remote.webdriver.WebDriver 实例化findWebElement :param driver: :param Type: yaml文件的Type值 :param Value: yaml文件的value值 """ self.__driver = driver self.__Type = Type self.__Value = Value # 定义查找元素 def find_element(self, yamlpath, key) -> webelement: """ 通过'id', 'name', 'class', 'tag', 'link', 'plink', 'css', 'xpath'查找相应的元素 :return: WebElemt对应 """ """定位元素""" by = self.__Type value = self.__Value element = None if by in ['id', 'name', 'class', 'tag', 'link', 'plink', 'css', 'xpath']: # noinspection PyBroadException try: if by == 'id': element = self.__driver.find_element_by_id(value) elif by == 'name': element = self.__driver.find_element_by_name(value) elif by == 'class': element = self.__driver.find_element_by_class_name(value) elif by == 'tag': element = self.__driver.find_element_by_tag_name(value) elif by == 'link': element = self.__driver.find_element_by_link_text(value) elif by == 'plink': element = self.__driver.find_element_by_partial_link_text(value) elif by == 'css': element = self.__driver.find_element_by_css_selector(value) elif by == 'xpath': element = self.__driver.find_element_by_xpath(value) else: Log.error("没有找到对应元素Type类型,请使用'id', 'name', 'class', 'tag', 'link', 'plink', 'css', 'xpath'") # Log.info('元素定位成功。定位方式:%s,使用的值%s:' % (by, value)) return element except NoSuchElementException as e: # print("no suceelement") Log.error("yaml文件为:" + yamlpath + ";页面中没有定位key值为'" + key + "'对应的元素;" + e.__str__() + ";请确保定位准确。") # self.get_img() # 调用截图 else: # print("输入的元素定位方式错误") Log.error("输入的元素定位方式错误,请使用'id', 'name', 'class', 'tag', 'link', 'plink', 'css', 'xpath'") def find_elements(self, yamlpath, key) -> list: """ 通过'id', 'name', 'class', 'tag', 'link', 'plink', 'css', 'xpath'查找相应的元素 :return: 当list_elements只有1个时直接返回selenium.webdriver.remote.webelement类,否则返回list :rtype list_elements : list of WebElement """ """定位元素""" by = self.__Type value = self.__Value list_elements = None if by in ['id', 'name', 'class', 'tag', 'link', 'plink', 'css', 'xpath']: # noinspection PyBroadException try: if by == 'id': list_elements = self.__driver.find_elements_by_id(value) elif by == 'name': list_elements = self.__driver.find_elements_by_name(value) elif by == 'class': list_elements = self.__driver.find_elements_by_class_name(value) elif by == 'tag': list_elements = self.__driver.find_elements_by_tag_name(value) elif by == 'link': list_elements = self.__driver.find_elements_by_link_text(value) elif by == 'plink': list_elements = self.__driver.find_elements_by_partial_link_text(value) elif by == 'css': list_elements = self.__driver.find_elements_by_css_selector(value) elif by == 'xpath': list_elements = self.__driver.find_elements_by_xpath(value) else: Log.error("没有找到对应元素Type类型,请使用'id', 'name', 'class', 'tag', 'link', 'plink', 'css', 'xpath'") # Log.info('元素定位成功。定位方式:%s,使用的值%s:' % (by, value)) return list_elements except NoSuchElementException as e: # print("no suceelement") Log.error("yaml文件为:" + yamlpath + ";页面中没有定位key值为'" + key + "'对应的元素;" + e.__str__() + ";请确保定位准确。") # self.get_img() # 调用截图 else: # print("输入的元素定位方式错误") Log.error("输入的元素定位方式错误,请使用'id', 'name', 'class', 'tag', 'link', 'plink', 'css', 'xpath'")上述就是by定位元素辅助ReadyamlToElement类使用的详细内容,详细使用情况还需要大家自己动手实验使用过才能领会。如果想了解更多,欢迎关注行业资讯频道!
元素
定位
文件
方式
输入
错误
页面
类型
辅助
成功
代码
实例
截图
文件名
参考
验证
价值
兴趣
内容
只有
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
云南咖啡
互联网与科技
互联网的科技
互联网科技有限公司经营范围
圆梦互联网科技
互联网与科技金融数据
深圳互联网络科技有限公司
广州紫鲸互联网科技
上海亿帐通互联网科技
互联网金融科技委员会
武汉健翔互联网络科技有限公司
深圳市优智互联网科技有限公司
开一家科技互联网公司需要多少钱
中国科技创新与世界互联网大会
河南住房之家互联网科技
东莞新华互联网科技学校
长沙易易互联网科技有限公司
中国主要互联网科技公司
前海云享互联网科技
小牛互联网科技有限公司地址
善班互联网科技
智慧科技互联网
亿人帮互联网科技
互联网养老 桔豆科技
广州恒生互联网科技有限
智腾互联网科技有限公司
湖南一路畅行互联网科技
中国互联网十大科技股排名
卓翼科技产业互联网合作
郑州欣桑互联网科技有限公司