公开课 上海读书会 0316

陈子昂 for 公开课 · March 16, 2019 · Last by 陈子昂 replied at March 16, 2019 · 609 hits

自动化的使用模式

补明天0317的。回顾最近一次讲到如何减少程序代码层级,让错误信息可以提前的raise和做一些练习,还有未交作业的可以github提交后,把作业反馈过来。

讲述1个常用的自动化使用模式,多个元素先存放起来,然后在场景内进行枚举匹配,落地最终项目内表现形式可以用很多种。
起因 自动化原则是先要有个元素,但一般会寻找一个唯一性element,一旦唯一性的元素被修改的,单个元素匹配这个case就失败了,如果case是一个关键case,就是一串多米诺的case失败。
当直接定位函数(元素),元素定位成功可执行,失败无法执行,没有中间可以调整的区域。
例子是拿互联网的,但都一样的,核心思想把定位元素的Template或者NodeName来多准备几个,但先不放到定位函数内。定位函数去枚举他们。

#例子一:
ele,ele1,ele2 ="id->kw","xpath->//input[@name='name']","xpath->//input[@value=text][1]"
actions ={
1:ele.split("->")[1], #只是测试代码这样写,实际应该是在exist_scene_ele中处理
2:ele1.split("->")[1],
3:ele2.split("->")[1]
}
def exist_scene_ele(var):
return {
"scene1":actions.get(1),
"scene2":actions.get(2),
"scene3":actions.get(3)
}.get(var,"not found")
print(exist_scene_ele("scene3"))
print(exist_scene_ele("scene4")) #白字错误not found
#例子2 上面3ele需要使用到
src_ele = "xpath->//input[@name='name']"

while 1:
if ele == src_ele:
print("ele ==src_ele")
break
elif ele1 == src_ele:
print("ele1 ==src_ele")
break
elif ele2 == src_ele:
print("ele2 ==src_ele")
break
#事实上是不用打印类似print("ele2 ==src_ele"),只需要把ele去连接要做的业务就行,比如函数点击。这个时候就需要学习PO模式了。

在看一个例子,都是朴实的代码,问题可以提取测试代码,化繁为简。

src_text ="315大拍卖"
for text in ["315","官网"]:
res =text in src_text
if res ==True: #如果找到了跳出去
break
assert res ==True #这里判断上面结果
print("pass") #assert成功走到这里

其他数据类型也支持。

Python pip install 反馈信息

pip install反馈信息不一定是对的以及源码安装(同样合适于内网用)
1.pip安装请先改下载源,因为部分需要依赖很多库的,超时次数过了,导致下载失败重安装有可能也会失败,这个会带来不必要的困扰。
请注意pip install和Pycharm IDE里不是万能的。

2.例如 Twisted安装如果遇到问题 C++14问题,如果你已经安装过C++运行库的,可以忽略,只需要前往这个网站下载(如果没有安装C++运行库,请先安装,因为源码下载安装时一样会失败。)
https://www.lfd.uci.edu/~gohlke/pythonlibs/ 然后网页查询到Twisted区域
python3.6 3和6代表大中版本匹配cp36就行(python大部分只需要关注大中版本,其他语言或者库也一样,当只有大中没有小版本,绝大多数情况下只需要关注大版本一致就行)

3.需要关注点win32代表x86 32位 amd64代表64位 最终选择:Twisted‑18.9.0‑cp36‑cp36m‑win_amd64.whl
.whl的库代表源码库(平时pip install 库 建议指向版本,源码安装时下载时就选择了版本了),需要下载到本地后 pip3 install xxx完整的whl名字 注意如果安装包地方需要到绝对路径,如果你已经cd到对应路径上就不需要

安利煎饼哥的推荐题目

github题目链接 支持python练手。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 1 条回复 时间 点赞

例子是非OOP的,但读书会上面强调过的,代码写起来一定要有类,构造器,类变量,成员函数,局部变量。严格按照面向对象来。如果不写面向对象,时间久了,会坑死自己的。

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up