• 换个思路?反正你也是想退出当前这个页面,尝试使用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 下。

0x7C00.