• 云服务器你是怎么玩的? at 2019年10月28日

    ①:练习 docker, docker -mysql,docker-Jenkins,等等
    ②:搭建各种服务,sentry,Jenkins,jira,allure 等等
    ③:跑程序,flask,爬虫
    ④:换各个系统玩,centos7,Ubuntu,练习命令。

  • 看下这个库,应该是满足你的需求:https://github.com/jd/tenacity

  • Python Requests 小技巧总结. at 2019年07月17日

    恩恩,如果有遗漏的 requests 小技巧,大家都可以在下面评论里边帮忙添加啊。😀

  • 自己了解的同时顺便分享了,不知道是不是有好多人和我一样好奇!😆

  • 入门:

    《Python 编程:入门到实践》

    进阶:

    《流程的 Python》
    《Python 学习笔记 上卷》- 雨痕老师著

    高级:

    《Python 源码剖析》

    以上专注于 Python 语言的学习!


    Python Web 开发方面

    《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'}
    
  • 分为请求 cookies 和响应 cookies
    • 1:请求 cookies
    res.request._cookies
    
    • 2: 响应 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
    
    
    
  • Python 中的日志库 logzero at 2018年02月01日

    目前项目在用 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。不过推荐你可以看下哈。

    sure github

  • 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 前后做一个前置后置的处理动作。

    • 简单一句话就是 highlight 需要被装饰的函数有返回值,而 screenshot 不需要。
    • 你最后看到都有 return element 是 因为本身被装饰的 find_element 方法需要。
    • 可以多了解下装饰器,这样更容易使用。

    你觉得不方便,是因为 test_2 函数中并没有额外封装的 find_element 方法。

    如果统一封装定位的方法,然后再装饰使用,那之后,所有的定位元素高亮就很方便了。

  • @Allen_ Python 。你说的支持是什么意思啊?是直接用在 java 里边嘛?还是借鉴 Python 的这个写法?我想应该是后者把?不可以直接用在 java 中的噢,但是你可以使用 java 语言实现。我对 java 不熟悉,你可以 google 下。

  • @chestnut

    你上面使用的 highlight 装饰器需要被装饰的函数 return 一个有效的 element 参数。你的 test_2 函数并没有 return 有效值。

    建议你可以用最下面的 highlight 方法,定位到元素之后返回该元素,然后把定位到 element 传给 highlight 函数,就可以高亮了。

  • @xlth1947 不客气😀

  • @lbxoqy 不客气.😀

  • @lose 😊

    @seveniruby 谢谢思寒加精。✨

    • 在中文前面加个
    'name':u'先生',
    

    试一下。

    可以使用 fiddler 抓包下你 post 的数据,查看下是否正确。Inspectors→webForms→bodydata

  • 漫漫人生路,加油啊,前辈!

  • @wenju.luo
    学习能力才最重要

    E.g:
    董伟明《Python Web 开发实战》作者,就职于豆瓣,高级产品开发工程师
    学历:大专
    专业:烹饪工艺与营养(神奇吧!)

    PS:每当自己不想学的时候,就想下,哇,这样都行!还是乖乖的去学习了。