如何通过by定位元素辅助ReadyamlToElement类使用
发表于:2025-12-04 作者:千家信息网编辑
千家信息网最后更新 2025年12月04日,如何通过by定位元素辅助ReadyamlToElement类使用?这篇文章运用了实例代码展示,代码非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。# -*- coding:utf-8 -*
千家信息网最后更新 2025年12月04日如何通过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安全错误
数据库的锁怎样保障安全
层次数据库代表
怎么收缩数据库
风暴魔域2通用服务器在哪
数据库成绩和姓名如何进行排序
网络安全二级证难度
刀型服务器
服务器怎样冗余
crsed游戏服务器在哪里
数据库数据操作错误
甘肃大学网络安全专业
1u服务器实际功率
联合县公安局网络安全宣传周活动
绵阳市税务局网络安全建设
uml在软件开发中做什么用
512g 服务器
崔泽鹏软件开发
AI工具在软件开发测试中的
恒盛网络技术有限公司招聘
网络安全法颁布会议
色弱可以报网络技术专业吗
数据库联系类型
根据年月日统计芒果数据库
剑灵服务器断开1000
软件开发客服总结报告怎么写
湘西州委网络安全何
ftp服务器的用户名如何保存
游戏不上服务器怎么办
网络安全层次划分
南理工网络安全学费一年多少
吴忠市软件开发定制找哪家