前言 pywinauto组合框控件ComboBox操作 场景 记事本-另存为-编码选择,下图这种就是组合框控件ComboBox select选择 官网给的教程是通过select选择选项 示例 frompywinautoimportApplication app=Application('uia').start("notepad.exe") win=app.window(title_re="无标题记事本") 输入内容 win.child_window(title="文本编辑器").set_text("helloworld") 文件-另存为 win.menu_select('文件...

前言 pywinauto对窗口和控件截图capture_as_image() 窗口截图 对连接的窗口截图 frompywinautoimportApplication app=Application('uia').start("notepad.exe") win=app.window(title_re="无标题记事本") 对窗口截图 win.capture_as_image().save('not.png') 运行后提示 Traceback(mostrecentcalllast): File"D:/demo/untitled_gui/daa/x5.py",line8,in<m...

前言 有些网站有反爬机制,比如用代码启动的浏览器会被检测到,需要人机验证,用脚本去点击或者滑动滑动虽然能滑动,但是会认证失败。 用playwright和selenium启动的浏览器都会用个webdriver属性。浏览器会根据这个属性判断是否是人工正常操作。 window.navigator.webdriver属性 人工正常打开的浏览器window.navigator.webdriver属性为false 以下是通过playwright打开的浏览器窗口,查看window.navigator.webdriver属性为true 跳过反爬检测机制 在启动浏览器时添加以下配置项 args=['--...

前言 playwright提供了一个expect方法用于断言,还可以设置超时时间。 expect使用 断言 描述 expect(locator).to_be_checked() Checkboxischecked expect(locator).to_be_disabled() Elementisdisabled expect(locator).to_be_editable() Elementisenabled expect(locator).to_be_empty() Containerisempty expect(locator).to_be_enable...

前言 v1.4.4版本新增对yaml用例格式校验,不合法的用例格式不会被执行,避免出现用例格式不合法导致的报错。 全部关键字总结 config中可用关键字 关键字 可支持类型 功能说明 name 可选str 没什么用,仅描述当前yaml用例的名称 base_url 可选str,支持格式:http://、https://、ws://、wss:// 当前yaml用例公共环境地址 variables 可选dict 声明当前yaml文件公共变量 fixtures 可选,strorlist支持格式:"xx","xx,yy",["xxx","yyy"] 当前yaml文件公共...

前言 大部分网站保存登录状态是用cookies,也有个别网站是在请求头部添加token实现保存登录。playwright可以使用set_extra_http_headers()方法设置浏览器请求头部参数 set_extra_http_headers()方法 设置头部参数headers,字典键值对 fromplaywright.sync_apiimportsync_playwright,expect withsync_playwright()asp: browser=p.chromium.launch(headless=False) context=browser.new_context(...

前言 pywinauto可以启动电脑自带的应用程序,也可以启动直接安装的应用 启动电脑自带的应用程序 上一篇环境准备,可以启动记事本了 frompywinauto.applicationimportApplication 启动记事本 app=Application(backend="uia").start("notepad.exe") 通过start()方法指定exe应用程序的名称即可。 start()方法用于启动一个可执行程序 start(cmd_line,timeout=None, retry_interval=None,create_new_console=False, wait...

前言 pywinauto操作弹出文件选择框,输入名称点保存 场景 点文件-另存为 弹出系统的文件选择框,需要输入文件名称,点保存按钮 文件选择框操作 示例代码 frompywinautoimportApplication app=Application('uia').start("notepad.exe") win=app.window(title_re="无标题记事本") 输入内容 win.child_window(title="文本编辑器").set_text("helloworld") 文件-另存为 win.menu_select('文件(F)->另存为(A)....

前言 pywinauto快捷键操作,使用send_keys()方法 按键对应的符号 按键名称对应符号 按键名称 对应符号 SHIFT + CTRL ^ ALT % SPACE BACKSPACE {BACKSPACE}{BS}or{BKSP} BREAK CAPSLOCK DELorDELETE {DELETE}or{DEL} DOWNARROW END ENTER {ENTER}or ESC HELP HOME INSorINSERT {INSERT}or{INS} LEFTARROW NUM...

前言 pywinauto操作MenuItem菜单项,以及子菜单项。 items()获取子菜单项 以navicat为例操作,获取menu菜单项 frompywinautoimportApplication app=Application('uia').start(r"D:\navicat\navicat11.0\navicat.exe") win=app.window(title_re="NavicatPremium") menu=win['Menu'] print(menu.items()) 运行结果 [<uia_controls.MenuItemWrapper'文件',M...

前言 pywinauto在查找到多个相同控件时操作会报错,可以使用found_index选择其中的一个 查找到多个 查找control_type="MenuBar"的所有控件 frompywinautoimportApplication app=Application('uia').start("notepad.exe") win=app.window(title_re="无标题记事本") 输入内容 win.child_window(title="文本编辑器").set_text("helloworld") 查找MenuBar menu=win.child_window(control...

前言 pywinauto提供了2种等待方法 wait()等待窗口达到指定状态 wait_not()等待窗口不处于某种状态 wait()等待 wait()相关源码 defwait(self,wait_for,timeout=None,retry_interval=None): """ Waitforthewindowtobeinaparticularstate/states. :paramwait_for:Thestatetowaitforthewindowtobein.Itcan beanyofthefollowingstates,alsoyoumaycombinethestatesb...

前言 前面学了pywinauto基础操作手,总不能老拿记事本练手,是时候找个常用的应用实战了,比如用微信实现自动发消息。 连上微信 先自己登录微信,打开窗口,用connect连上微信窗口 frompywinauto.applicationimportApplication frompywinauto.keyboardimportsend_keys 连接到wx app=Application(backend='uia').connect( path=r'C:\ProgramFiles(x86)\Tencent\WeChat\WeChat.exe' ) 定位到主窗口 win=app.win...

前言 expect_response()方法可以捕获接口返回的数据,在爬取网页数据时非常有用。 expect_response()使用 官方文档示例 withpage.expect_response("https://example.com/resource")asresponse_info: page.get_by_text("triggerresponse").click() response=response_info.value print(response.ok) orwithalambda withpage.expect_response(lambdaresponse:resp...

前言 与指定响应模型的方式相同,你也可以在以下任意的_路径操作_中使用 status_code 参数来声明用于响应的HTTP状态码: @app.get() @app.post() @app.put() @app.delete() 响应状态码 fromfastapiimportFastAPI app=FastAPI() @app.post("/items/",status_code=201) asyncdefcreate_item(name:str): return{"name":name} 注意,status_code 是「装饰器」方法(get,p...

前言 假设你想要返回一个 XML响应。你可以把你的XML内容放到一个字符串中,放到一个 Response 中,然后返回。 Response自定义返回 可以把XML内容放到一个字符串中,放到一个 Response 中,设置media_type="application/xml" fromfastapiimportFastAPI,Response app=FastAPI() @app.get("/xml/") defget_legacy_data(): data="""<?xmlversion="1.0"?> <shamp...

  iKXeBmqdRgYF   2023年11月02日   42   0   0 字符串FastAPIxmlFastAPI字符串xml

前言 在某些情况下,您可能需要将数据类型(如Pydantic模型)转换为与JSON兼容的数据类型(如dict、list等)。比如,如果您需要将其存储在数据库中。对于这种要求, FastAPI提供了jsonable_encoder()函数。 使用jsonable_encoder jsonable_encoder 在实际应用场景中,可能需要将数据类型(如:Pydantic模型)转换为与JSON兼容的类型(如:字典、列表) 比如:需要将数据存储在数据库中 为此,FastAPI提供了一个jsonable_encoder()函数 jsonable_encoder实际上是FastAPI内部用来...

  iKXeBmqdRgYF   2023年11月02日   45   0   0 json数据数据FastAPIFastAPIjson

前言 page.expect_request()可以捕获网页上发出去的请求,当有多个请求时,可以根据请求url,请求方式判断。 expect_request 官方文档示例 withpage.expect_request("http://example.com/resource")asfirst: page.get_by_text("triggerrequest").click() first_request=first.value orwithalambda withpage.expect_request(lambdarequest:request.url"http://example.c...

前言 可以在 路径函数 中定义一个类型为 Response的参数,这样你就可以在这个临时响应对象中设置cookie了。 response参数 设置cookies fromfastapiimportFastAPI,Response app=FastAPI() @app.post("/cookie-and-object/") defcreate_cookie(response:Response): response.set_cookie(key="fakesession",value="fake-cookie-session-value") return{"m...

前言 你可以在你的_路径操作函数_中声明一个Response类型的参数。 设置响应头部 你可以在这个_临时_响应对象中设置头部 fromfastapiimportFastAPI,Response app=FastAPI() @app.get("/headers-and-object/") defget_headers(response:Response): response.headers["X-Cat-Dog"]="aloneintheworld" return{"message":"HelloWorld"} 然后你可以像平常一样返回任何你需要的对象(例如一个dict或者一个数据库...

关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~