python 我可以用PyWinAuto重新连接到主窗口吗?

mgdq6dx1  于 2022-11-28  发布在  Python
关注(0)|答案(1)|浏览(253)

我打开浏览器,点击屏幕上的按钮,点击弹出窗口的按钮,没有问题。唯一的问题是,当我关闭弹出窗口点击按钮“关闭Tor浏览器”,我不能重新连接到我的前一个窗口(主窗口和第一个窗口)。任何提示??

from pywinauto.application import Application
import time

for i in range(0,2):
    try:
        for i in range(0,1):
            try:
                app=Application(backend='uia').start('\...\firefox.exe')
                app=Application(backend='uia').connect(title='Connect to Tor — Tor Browser',timeout=40)
                time.sleep(5)
                app.window(best_match='Dialog', top_level_only=True).child_window(best_match='Ver todos los servicios').click()

            except Exception:
                time.sleep(1)
                app2=Application(backend='uia').connect(title='Close Tor Browser',timeout=40)
                app2.window(best_match='Dialog', top_level_only=True).child_window(best_match='Cancel').click()
                
        time.sleep(5)
        app=Application(backend='uia').connect(title='Connect to Tor — Tor Browser',timeout=40)   
        top_level_only=True).child_window(best_match='Ver todos los servicios').click()
        time.sleep(10)
        app.kill()
        time.sleep(1)

    except Exception:
        pass

我可以很容易地打开浏览器,点击屏幕上的按钮,并点击弹出窗口的按钮没有问题。唯一的问题是,当我关闭弹出窗口点击按钮“关闭Tor浏览器”,我不能重新连接到我的前一个窗口(主窗口和第一个窗口)。任何提示??

xwmevbvl

xwmevbvl1#

最好的办法是控制(假设扩展有可交互的弹出窗口[例如,选项,无论什么,一旦你点击/按下指定的热键)如下(kukos到BrowserStack民间,和RobWu RobWu - CRX / page taxomy etc.)。
这是我在这里探索的解决方案-将在评论中留下关于pywinauto方法的替代链接,该方法也应该实现你所需要的(使用对象元素而不是不准确的图片识别,虽然它也可以这样做,我相信,后端方法可能能够为您的情况服务RE:同时使用不同的桌面)。

建议的方法:

1.获取扩展的ID(在相应Webstore页面上的URL中,如果存在,或在设置中的应用程序详细信息中)
[

例如https://chrome.yada.yada.yada.then.BOOM./dknlfmjaanfblgfdfebhijalfmhmjjjo
1.将此ID插入到以下url中**YOURID**的位置(取出后者,将前者放在其位置):

是的,它有两个https:不要被它的假设所困扰。如果你感到怀疑,请查看下面的参考资料/博客网站。回复:合法性/有效性等¯_()_/¯

  • 在我的情况下,这将是:

https://robwu.nl/crxviewer/?crx=https://chrome.google.com/webstore/detail/dknlfmjaanfblgfdfebhijalfmhmjjjo
这将提供一个如下所示的网页-带有关于扩展名的有用详细信息-每个文件/弹出窗口html组件(LHS),使用RegEx查找要自动化的页面。

  • 请注意,您可以从此处下载crx和卸载的包-但这是另一个雨天-回到Story Rory
  • 在这个例子中,当我点击扩展时,我会弹出一个窗口-所以我过滤了所有的html,下面的倒数第二张图片,以获取这一步的最终图片:

只剩下一个html --听起来很有希望,因为它的标题是“popup.html”(这并不罕见)--
1.现在你有了popup.html(我们称之为OPTION_PAGE-在下面的url中使用它(同样,在适当的地方替换你的扩展的详细信息在这个url中的明显位置,瞧!(第一个belo = generaic例如,min是live demo!:)

  1. chrome-extension://**YOUR_ID**/**YOUR_OPTION_PAGE**变成了(在我的例子中)
  2. chrome-extension://dknlfmjaanfblgfdfebhijalfmhmjjjo/popup.html
    它打开一个完整的网页,包括相关的交互式/可编程友好的选项页!
    (狗头)

**备注/示例:

费奥尔:
1.可更时新/放眼病房
1.不需要进行身体干预的对照试验
1.应该能够在隐藏模式下运行(这将是伟大的-但prop.不允许!:)
1.多流程能力,尤其是需求建模能力
使用虚拟ID登录到noptcha的代码(来吧,试试看-你可能会很幸运!not:))
一些上下文RE:变量/fn:
对于n浏览器,向量ps =[0,1,2,...,n]的p元素-您可以忽略此元素,并假定d[p]之类的变量仅代表驱动程序,其中driver = webdriver.Chrome(options=o, executable_path=path_exec)
activ(p)激活第p个浏览器-忽略
ss = time.time(因此ss(0.5)也称为时间。时间(0.5)= 0.5秒延迟)

import time

from selenium.webdriver.common.action_chains import ActionChains as AC
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
from concurrent.futures import hreadPoolExecutor, ProcessPoolExecutor  
#*(see [here][7]) - as I say, not essential* 


def nopecha(p):

    print('nopecha')
    global d # selenium webdriver - with early thinking as wemight have given to access, and done the hand me donw ting L)
    #d[p].implicitly_wait(10)
    activ(p) #this activates window in quesiton
    d[p].get("chrome-extension://dknlfmjaanfblgfdfebhijalfmhmjjjo/popup.html")
    d[p].find_element_by_class_name('plan_button.clickable').click()
    ss(0.5)
    AC(d[p]).key_down(Keys.CONTROL).send_keys('a').key_up('keys.CONTROL').perform() #send_keys_to_element()
    #kd('ctrl'), pr('a'), ku('ctrl'), pr('delete')
    ss(0.5)
    el = d[p].find_element_by_class_name('plan_info')
    # d[p].find_element_by_class_name('plan_info').clear()
    AC(d[p]).send_keys_to_element(el, 'made-up-example-for-extension-login-serial-hope-you-understand-ta-k-bye-now').perform() #note this doesn't hijack your mouse/keyboard - you could still be using it while multiple browsers being threaded - as in this case 
    ss(0.5)
    AC(d[p]).send_keys_to_element(el, Keys.ENTER).perform()
    # d[p].find_element_by_class_name('plan_button.clickable').click()
    # AC(d[p]).send_keys(Keys.ENTER).perform()
    try:
        d[p].find_element_by_class_name('btn off').click()
    except:
        pass
    el = ev[p]('''return document.querySelector('.menu').children[1].lastElementChild''')
    el.click(), cc(2)
    with UIPath(u"chrome-extension://dknlfmjaanfblgfdfebhijalfmhmjjjo/popup.html - Chromium||Pane"):
        click(u"||Document->Image||Text")
        click(u"||Document->Speech||Text")

    # for p in ps: th_0(p)

Gif镜头:

相关问题