原文链接:https://mp.weixin.qq.com/s?__biz=MzU5NTgyMTE3Mg==&mid=2247483802&idx=1&sn=3218e34b63d0602457612996fc7d3282&chksm=fe6d5681c91adf976e5ea536fe70ea8ff43e99b3920cc2adca955bd94f75220ebeb0378cf254&token=1561865834&lang=zh_CN#rd

思路

  在 UI 自动化中页面有很多不确定性,需求稍微有小小的变动,就需要修改自动化代码如果将定位元素和方法写在一起,维护脚本时就比较麻烦

  因此,将定位元素放在配置文件中,方法单独写,方法中的定位元素都来自配置文件,维护时就比较方便

  如果需求有变动,那个方法有变动就修改方法,定位有变动只需修改配置文件中的定位元素

  将定位元素与方法分离不但可以增强代码的简洁性更有利的是维护起来方便

本文仅说明将元素配置成配置文件

  在项目中最好将配置文件统一管理,例如都放在 configElement 文件下

  还是以百度首页搜索为例

步骤:

1、新建配置文件

  在 python 中配置文件一般是 ini 格式,暂时命名为 BaiduElement.ini

  内容如下: 

[BaiduHomeElement]
baidu_search_input = id:kw
baidu_search_button = id:su

 注:[BaiduHomeElement] 这个节点只是注明这个节点下的都为百度首页的元素

    如果是注册页面则可写成 [RegisterElement]  名称自定义,但最好还是写的有点含义,别人一看就能看懂是什么意思,是那个地方的元素

    baidu_search_input = id:kw    id 与 kw 之间的符号可以任意,只是为了区分用什么定位,定位值是啥,也可以写成<、=、》等,但是整个项目中最好统一

  

2、读取配置文件

  配置文件 ini 的读取用到的是  configparser 库,所以要先导入该库:pip install configparser

# 创建对象
cf = configparser.ConfigParser()
# 读取文件,传入文件路径,如果在同一个目录下则直接传入文件名即可
cf.read("BaiduElement.ini")
# 获取元素
# 第一个参数为自定义的节点,第二个参数节点下的key
element = cf.get("BaiduHomeElement", "baidu_search_input")
print(element)

  打印结果:

  

3、对读取配置文件进行封装

  目的:使任意一个节点下的元素都可以使用同一个方法获取  

# encoding = utf-8

import configparser

class ReadIni(object):

    def __init__(self, file_name=None):
if file_name == None:
file_name = "BaiduElement.ini" # 配置文件路径可以自定义,如果不在当前目录下则读取设置的文件路径
self.cf = self.load_ini(file_name) def load_ini(self,file_name):
     """读配置文件"""
cf = configparser.ConfigParser()
cf.read(file_name)
return cf def get_value(self,pageElement,key):
     """获得所需的值"""
date = self.cf.get(pageElement,key)
return date if __name__ == '__main__':
cr = ReadIni()
s = cr.get_value('BaiduHomeElement','baidu_search_input')
print(s)

  运行结果:

  

4、转换

  将步骤3获取的结果进行处理,变成定位 key 和 value

  方法很简单,使用 split 方法即可

  如下例:  

s = id:kw
print(s.split(':'))

  打印结果为:['id', 'kw']

  只需要将 selenium 中的定位进行二次封装,将获得第一个值作为定位 key ,第二个值作为定位 value 即可直接定位

原文发布在微信公众号:软件羊皮卷

欢迎关注

selenium-配置文件定位元素(九)的更多相关文章

  1. selenium配置文件定位元素

    之前的写的selenium的定位元素进行测试的代码,现在一运行就报找不到元素了,之前运行的好好的. 我查看网站源码后,发现网站元素确实是变了,原来的定位的xpath代码压根全部找不到了,于是 想着,以 ...

  2. selenium+python定位元素方法

    定位元素方法 官网地址:http://selenium-python.readthedocs.org/locating-elements.html        这里有各种策略用于定位网页中的元素(l ...

  3. selenium 难定位元素,时间插件,下拉框定位,string

    1.元素定位 ID定位元素: findElement(By.id(“”)); 通过元素的名称定位元素: findElement(By.name(“”)); 通过元素的html中的位置定位元素: fin ...

  4. selenium css定位元素

    CSS 选择器: 常见符号: #表示 id选择器 .表示 class选择器 >表示子元素,层级 一个空格也表示子元素,但是是所有的后代子元素,相当于 xpath 中的相对路径 一.css:属性定 ...

  5. Selenium Webdriver定位元素的几种方式

    原文:http://www.cnblogs.com/tobecrazy/p/4570494.html 工作中使用到记录一下. 主要有: 上传 alter dialog prompt dialog co ...

  6. selenium无法定位元素问题

    在用自动化测试工具selenium完成下载任务时,经常会遇到定位不到元素的情况,总结如下: 1.frame/iframe原因定位不到元素: 这个是最常见的原因,首先要理解下frame的实质,frame ...

  7. selenium java-3 定位元素的八种方法

    web driver提供了八种元素定位的方法: id name class name tag name link text partial link text xpath css selector 如 ...

  8. selenium+python定位元素的方法及使用

    selenium的八种定位方法 By.ID 通过id定位 By.CLASS_NAME 通过className定位 By.CSS_SELECTOR 通过CSS定位 By.LINK_TEXT 通过link ...

  9. selenium 难定位元素,时间插件,下拉框定位,string包含,定位列表中的一个,技巧

    关于frame: 如果网页存在iframe的话,传统的定位有时候找不到元素,需要切换frame: # 切换到leftFrame定位“测井设计” driver.switch_to_frame(" ...

  10. Selenium的定位元素

    1.浏览器操作 # 刷新 driver.refresh()   # 前进 driver.forward()   # 后退 driver.back() 2.获取标签元素 # 通过ID定位目标元素 dri ...

随机推荐

  1. [Swift]LeetCode632. 最小区间 | Smallest Range

    You have k lists of sorted integers in ascending order. Find the smallest range that includes at lea ...

  2. (转)iOS学习——UIlabel设置行间距和字间距

    在iOS开发中经常会用到UIlabel来展示一些文字性的内容,但是默认的文字排版会觉得有些挤,为了更美观也更易于阅读我们可以通过某些方法将UIlabel的行间距和字间距按照需要调节. 比如一个Labe ...

  3. Kubernetes因限制内存配置引发的错误

    今天对一个pod进行内存资源调整后, 一直卡在ContainerCreating的状态, 执行describe命令查看该 Pod 详细信息后发现如下 . [root@master-01 ~]# kub ...

  4. 11.Git分支-远程跟踪分支的概念、多个远程仓库的使用

    1.远程跟踪分支的概念 远程引用是对远程仓库的引用,包括分支.标签等等. 1.可以通过 git ls-remote <remote> 来获得远程引用的完整列表  2.git remote ...

  5. ASP.NET Core 2.1 Web API + Identity Server 4 + Angular 6 + Angular Material 实战小项目视频

    视频简介 ASP.NET Core Web API + Angular 6的教学视频 我是后端开发人员, 前端的Angular部分讲的比较差一些, 可以直接看代码!!!! 这是一个小项目的实战视频, ...

  6. BBS论坛(三十一)

    31.帖子加精和取消加精功能完成 (1)apps/models.py class HighLight(db.Model): __tablename__='highlight_post' id = db ...

  7. ESXI开启snmp协议方法

    公司用VMware做虚拟化,15+HPE 服务器做集群,现需要用zabbix监控其状态,于是想通过打开主机的snmp协议来采集数据,监控其状态,注意其数据是ESXI系统返回的. ssh登录到ESXI上 ...

  8. 在ASP.NET Core中获取客户端IP地址

    随着ASP.NET的发展,有不同的方式从请求中访问客户端IP地址.WebForms和MVC Web应用程序只是访问当前HTTP上下文的请求. var ip = HttpContext.Current. ...

  9. 从锅炉工到AI专家(7)

    说说计划 不知不觉写到了第七篇,理一下思路: 学会基本的概念,了解什么是什么不是,当前的位置在哪,要去哪.这是第一篇希望做到的.同时第一篇和第二篇的开始部分,非常谨慎的考虑了非IT专业的读者.希望借此 ...

  10. CentOs~程序部署那些事

    永久更新中…… 主要说一下在centos里,在安装程序和监控程序时,用到的一些常用的命令,希望可以帮到大家! 远程安装程序包:yum install 程序包名 下载程序包:wget 程序包地址 解压t ...