当前位置: 首页 > 知识库问答 >
问题:

使用未检测到的chromedriver selenium、python打开第二个窗口

洪俊能
2023-03-14

我正在尝试打开两个或更多单独的窗口。

我跑着打开了第一扇窗户

from selenium import webdriver
import undetected_chromedriver.v2 as uc

options = webdriver.ChromeOptions()
options.add_argument(r"--user-data-dir=C:\Users\username\AppData\Local\Google\Chrome\User Data")

drivers = list()
drivers.append(uc.Chrome(options=options))

现在,我试图通过简单地重复最后一行(drivers.append(uc.Chrome(options=options))来打开第二个窗口,但它返回了

RuntimeError: you cannot reuse the ChromeOptions object

所以我尝试了

options = webdriver.ChromeOptions()
options.add_argument(r"--user-data-dir=C:\Users\username\AppData\Local\Google\Chrome\User Data")

drivers.append(uc.Chrome(options=options))

这次它又回来了

WebDriverException: unknown error: cannot connect to chrome at 127.0.0.1:54208
from chrome not reachable

我该怎么解决这个问题?

共有1个答案

东方旭东
2023-03-14

这对我有用,我不能使用v2,但它在v1中有效。

    import undetected_chromedriver as uc  
    uc.install(executable_path=PATH,)
    drivers_dict={}   
    def scraping_function(link):
            try:
                thread_name= threading.current_thread().name
                    #sometime we are going to have different thread name in each iteration so a little regex might help
                thread_name = re.sub("ThreadPoolExecutor-(\d*)_(\d*)", r"ThreadPoolExecutor-0_\2", thread_name)
                print(f"re.sub -> {thread_name}")
                driver = drivers_dict[thread_name]
            except KeyError:
                drivers_dict[threading.current_thread().name] = uc.Chrome(options=options,executable_path=PATH)
                driver = drivers_dict[threading.current_thread().name]
            driver.get(link)
 类似资料:
  • 问题内容: 我尝试使用的任何浏览器(IE,Firefox,Chrome)都无法使用此功能。如何检测何时在窗口中加载页面(如iframe onload)? 问题答案: 如果你关心IE,请改用以下内容作为第二行: 正如你所看到的,支持IE是相当繁琐的,应该避免可能的话。我的意思是,如果你因为受众群体而需要支持IE,则一定要这样做。

  • 我的应用程序在单击按钮时打开一个新窗口,我需要在该窗口中执行一些操作。但是SeleniumWebDriver的响应getWindowHandles()方法中只有一个窗口id。如果在打开新窗口后调用getWindowHandles()时出现延迟,则会发生这种情况。硒有一个已知的问题。https://github.com/SeleniumHQ/selenium/wiki/InternetExplore

  • 如有任何帮助,我们将不胜感激。 问候你,Surender

  • 任务:Main.Main()失败无法创建窗口 执行任务“:main.main()”失败。 进程“命令”c:/program files/java/jdk-16/bin/java.exe“以非零退出值-1结束 null null

  • 我需要这段java代码的帮助。我有三个场景登录场景,管理场景,和玩家场景。当我运行程序并输入用户和密码时,第二个应该打开。现在的问题是,第二个场景没有打开。它甚至连接到数据库,但第二个场景没有打开。我已经检查了代码,我看不出有什么问题。能不能请一些帮帮我,发生了什么事。

  • 我想在一个活动中打开不同的文章,使用我通过通知发送的不同帖子id。我可以点击通知打开一个帖子,但打开同一个活动后,我无法打开或处理第二个通知。 注意:我试过使用可以轻松打开所有通知,但当按下HOME(主页)按钮并从抽屉重新打开应用程序时,它会打开第一个通知,而不是最后一个打开的通知。 XML很简单`