①:练习 docker, docker -mysql,docker-Jenkins,等等
②:搭建各种服务,sentry,Jenkins,jira,allure 等等
③:跑程序,flask,爬虫
④:换各个系统玩,centos7,Ubuntu,练习命令。
看下这个库,应该是满足你的需求:https://github.com/jd/tenacity
恩恩,如果有遗漏的 requests 小技巧,大家都可以在下面评论里边帮忙添加啊。
自己了解的同时顺便分享了,不知道是不是有好多人和我一样好奇!😆
入门:
《Python 编程:入门到实践》
进阶:
《流程的 Python》
《Python 学习笔记 上卷》- 雨痕老师著
高级:
《Python 源码剖析》
以上专注于 Python 语言的学习!
《Python Web 开发实战》- 董伟明
比较全面的介绍了 Python Web 开发的方方面面,不太适合入门。
《Flask Web 开发实战》- 李辉
专注于 Flask,从基础到进阶,比较大而全,适合入门学习。
《Django 企业开发实战》- 胡阳
专注于 Django,适合有一定 Python 基础学习
估计用 Excel 的数据驱动思维继承的是以前 QTP 的方式,记得最早接触自动化就是 QTP,数据的参数化就是类 Excel 的视图。
因人而异吧,虽然个人不喜欢 Excel 的参数化,但是如果用的人非常的熟悉,能够及时把自动化推广用到项目中,先解决有无的问题,是可以接受的。
但最不能接受的是 UI 自动化数据存到数据库的, 这是要和开发拼 CRUD 的能力嘛?
In[3]: eval(" {'message': '[Errno 2] No such file', 'retMsg': '服务器内部错误', 'status': 'FAILURE'}")
Out[3]: {'message': '[Errno 2] No such file', 'retMsg': '服务器内部错误', 'status': 'FAILURE'}
res.request._cookies
res.cookise
换个思路?反正你也是想退出当前这个页面,尝试使用 send_keys "ESC" 按键 试试看。
# Python 黑魔法之 不安全的方式
In [1]: eval('1234')
Out[1]: 1234
# 安全的方式
In [2]: import ast
In [3]: ast.literal_eval('1234')
Out[3]: 1234
目前项目在用 logbook,好像功能 比 logzero 更强大点。
你可以封装类 Aciton ,在类中 封装 page(),sendKeys() 方法,每个方法 return self,这样就可以实现链式的调用了。
伪代码 (Python 3 )
class Aciton:
def page(self):
do something
return self
def send_keys(self):
do something
return self
def click(self):
do something
return self
if __name__ == __main__:
ac = Aciton()
ac.page().send_keys().click()
mv 2017_TODO_LIST 2018_TODO_LIST
看到这个问题,第一个想到了 sure,蛋疼的是,好像没有适合你这个场景的 assert API。不过推荐你可以看下哈。
json 数据比较大,可以考虑存在文件中,再发送。参考代码
files = {'upload_file': open('file.json','rb')}
r = requests.post(url, files=files, data=values)
或者
借助于第三方 requests 插件
import requests
from requests_toolbelt.multipart import encoder
session = requests.Session()
with open('my_file.csv', 'rb') as f:
form = encoder.MultipartEncoder({
"documents": ("my_file.csv", f, "application/octet-stream"),
"composite": "NONE",
})
headers = {"Prefer": "respond-async", "Content-Type": form.content_type}
resp = session.post(url, headers=headers, data=form)
以上没有试验,你可以自己试试看噢。
hi,@yuweixx
好像没有直接的 API 用于部分截图。一般是借助于第三方的工具。例如 PIL
参考方法:
from selenium import webdriver
from PIL import Image
fox = webdriver.Firefox()
fox.get('http://stackoverflow.com/')
# now that we have the preliminary stuff out of the way time to get that image :D
element = fox.find_element_by_id('hlogo') # find part of the page you want image of
location = element.location
size = element.size
fox.save_screenshot('screenshot.png') # saves screenshot of entire page
fox.quit()
im = Image.open('screenshot.png') # uses PIL library to open image in memory
left = location['x']
top = location['y']
right = location['x'] + size['width']
bottom = location['y'] + size['height']
im = im.crop((left, top, right, bottom)) # defines crop points
im.save('screenshot.png') # saves new cropped image
@chestnut 因为 screenshot 装饰器并不需要被装饰的函数有返回值传递给他。
都有 return element 是因为本身装饰的函数 find_element 需要 return element。
Python 装饰器本身的作用就是在被包装的函数前 or 后 or 前后做一个前置后置的处理动作。
你觉得不方便,是因为 test_2 函数中并没有额外封装的 find_element 方法。
如果统一封装定位的方法,然后再装饰使用,那之后,所有的定位元素高亮就很方便了。
@Allen_ Python 。你说的支持是什么意思啊?是直接用在 java 里边嘛?还是借鉴 Python 的这个写法?我想应该是后者把?不可以直接用在 java 中的噢,但是你可以使用 java 语言实现。我对 java 不熟悉,你可以 google 下。
你上面使用的 highlight 装饰器需要被装饰的函数 return 一个有效的 element 参数。你的 test_2 函数并没有 return 有效值。
建议你可以用最下面的 highlight 方法,定位到元素之后返回该元素,然后把定位到 element 传给 highlight 函数,就可以高亮了。
@xlth1947 不客气
@lbxoqy 不客气.
@seveniruby 谢谢思寒加精。
'name':u'先生',
试一下。
可以使用 fiddler 抓包下你 post 的数据,查看下是否正确。Inspectors→webForms→bodydata
漫漫人生路,加油啊,前辈!
@wenju.luo
学习能力才最重要
E.g:
董伟明《Python Web 开发实战》作者,就职于豆瓣,高级产品开发工程师
学历:大专
专业:烹饪工艺与营养(神奇吧!)
PS:每当自己不想学的时候,就想下,哇,这样都行!还是乖乖的去学习了。