【问题标题】:Two chrome windows and unexpected quit after running selenium chromedriver运行 selenium chromedriver 后两个 chrome 窗口和意外退出
【发布时间】:2020-11-11 13:19:21
【问题描述】:

我的项目中有 3 个文件:ma​​in.pyg_webdriver.pywhatever.py。它们看起来像这样:

ma​​in.py

import g_webdriver
import whatever

g_webdriver.run_chrome('https://stackoverflow.com')

g_webdriver.py

from selenium import webdriver

driver = webdriver.Chrome()

def run_chrome(url:str):
    driver.get(url)
    driver.maximize_window()

whatever.py

from selenium import webdriver

driver = webdriver.Chrome()

如果我运行我的 main.py 文件,selenium 会打开两个单独的 chrome 窗口:一个带有已加载的 stackoveflow 网站,一个带有 data:, 在 url 栏中的空白窗口。当然,我只想打开一个窗口。如何解决这个问题?另外我必须提到,我试图摆脱驱动程序变量并直接通过webdriver.Chrome() 打开我的 chrome,但这种方法也不起作用,因为它会打开两个单独的窗口(一个加载页面,一个空白),就像第一个窗口一样几秒钟后关闭。

【问题讨论】:

    标签: python selenium selenium-webdriver webdriver selenium-chromedriver


    【解决方案1】:

    当您运行 main 时,python 导入 g_webdriver 并执行该文件中的所有代码,包括以下行:

    driver = webdriver.Chrome()
    

    这就是打开第一个窗口的时候。

    然后 python 导入whatever 并再次运行driver = webdriver.Chrome(),所以你得到另一个单独的窗口。 webdriver.Chrome() 总是创建一个新窗口。

    此时打开了 2 个带有空白页的窗口,您在 g_webdriver.driver 中打开了 stackoverflow。

    您可以将打开的 Chrome 窗口提取到另一个文件,并将一个共享驱动程序导入两个文件:

    chrome_window.py:

    from selenium import webdriver
    
    driver = webdriver.Chrome()
    

    g_webdriver.py:

    from selenium import webdriver
    from chrome_window import driver
    
    def run_chrome(url:str):
        driver.get(url)
        driver.maximize_window()
    

    whatever.py:

    from chrome_window import driver
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-20
      • 1970-01-01
      • 2012-11-19
      • 1970-01-01
      • 2019-07-22
      • 2020-05-10
      • 1970-01-01
      • 2019-05-01
      相关资源
      最近更新 更多