如何通过by定位元素辅助ReadyamlToElement类使用
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,如何通过by定位元素辅助ReadyamlToElement类使用?这篇文章运用了实例代码展示,代码非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。# -*- coding:utf-8 -*
千家信息网最后更新 2025年01月23日如何通过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安全错误
数据库的锁怎样保障安全
搜大网络技术有限公司
java数据库增删改查
在哪学游戏软件开发
服务器显卡驱动安装不上
网络安全协会建立专家库的意义
山西曙光服务器维修哪家好
虚拟币otc软件开发
洛阳华之文网络技术有限公司
东滨网络技术有公司
中国未来网络技术有限公司
用友t6服务器自动停止
cf手游服务器直播
软件开发公司口号
天津常用软件开发市场报价
设备的后端服务器架构
网页连接数据库java
清远库存戴尔服务器
甘肃党建设计软件开发
网络安全手抄报图片可爱壁纸
深圳东信网络技术有限公司
达梦数据库 dm8 费用
银川网络安全技术提升
一个数据库几部分组成
戴尔服务器r730导轨卡住
免费的服务器资源
淘宝如何发布打单软件开发
枣庄手机软件开发哪家便宜
网络安全加密码匙是什么意思
网络安全初创公司
文职软件开发