Gointerface接口声明实现及作用详解
578
2022-09-01
pywinauto自动化操作谷歌浏览器 pywinauto操作没有窗口的应用(pywinauto 浏览器)
一、需求背景
但是有些链接卡片没有复制链接按钮,也不允许转发:
首先想到的是用selenium来读取url,后来考虑到还要下载webdriver,对浏览器版本也有要求,很麻烦,不如使用pywinauto来得快
二、技术实现
只需要定位到这个地址栏,然后获取他的值就可以了,但是实现起来有几个问题:
2.地址栏获取到的地址缺少缺少''get_pid(pname): pid_lis = [] for proc in psutil.process_iter(): #print(“pid-%d,name:%s” % (proc.pid,proc.name())) if proc.name() == pname: pid_lis.append(proc.pid) # return proc.pid return pid_lispid_list = get_pid('chrome.exe')for pid in pid_list: chrome = ChromeAuto(pid) link = chrome.get_url() if link: chrome.quit() os.system(f"taskkill /t /f /im chrome.exe") print(link) breakelse: logger.info(f'url get none')
脚本演示
class ChromeAuto: """链接点开默认浏览器打开后的谷歌界面 """ def __init__(self, process=None): self.app = None self._start(process=process) def _start(self, process=None): if process: self.app = Application(backend='uia').connect(process=process) else: logger.debug(f'IeAuto _start err') return def quit(self): if self.app: self.app.kill() self.app = None def get_url(self): try: # print(self.app.top_window()) # pywinauto.application.WindowSpecification # print(self.app.window()) # pywinauto.application.WindowSpecification # print(self.app.windows()) # [] 不能再往下进行查找操作了 for i in self.app.windows(): # 下面的流程比较耗时,进程号不对的没有self.app.windows()不会走下面的逻辑,优化速度 edit_ctrl = self.app.top_window().child_window(title='地址和搜索栏', control_type='Edit') # print(edit_ctrl.texts) # 控件信息:> # print(edit_ctrl.get_value()) edit_ctrl.double_click_input() # 地址栏显示的不是全链接,缺少'' time.sleep(0.5) url = edit_ctrl.get_value() # uia_controls.py中有各种类型的控件类,可查看各自的方法属性 if url: # if not 'url'.startswith(' # url = '+ url return url except: logger.info(f'ChromeAuto get_url err')
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~