使用selenium启动后,Google Chrome立即关闭

Lat*_*ass 0 python selenium google-chrome selenium-chromedriver

我在Mac OS X上使用selenium和python 3.6.3.

此代码运行正常,打开谷歌铬和铬保持打开:

chrome_options = Options()
chrome_options.binary_location="../Google Chrome"
chrome_options.add_argument("disable-infobars");
driver = webdriver.Chrome(chrome_options=chrome_options)

driver.get("http://www.google.com/")
Run Code Online (Sandbox Code Playgroud)

但是在代码包含在函数内部后,浏览器会在打开页面后立即终止:

def launchBrowser():
   chrome_options = Options()
   chrome_options.binary_location="../Google Chrome"
   chrome_options.add_argument("disable-infobars");
   driver = webdriver.Chrome(chrome_options=chrome_options)

   driver.get("http://www.google.com/")
launchBrowser()
Run Code Online (Sandbox Code Playgroud)

我想在保持浏览器打开的同时在函数内使用相同的代码.

Ano*_*oah 13

为了使浏览器保持打开状态,我这样做:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

def browser_function():
    driver_path = "path/to/chromedriver"
    chr_options = Options()
    chr_options.add_experimental_option("detach", True)
    chr_driver = webdriver.Chrome(driver_path, options=chr_options)
    chr_driver.get("https://target_website.com")
Run Code Online (Sandbox Code Playgroud)


Beh*_*dad 7

只需简单地添加:

while(True):
    pass
Run Code Online (Sandbox Code Playgroud)

到你的函数结束。它会是这样的:

def launchBrowser():
   chrome_options = Options()
   chrome_options.binary_location="../Google Chrome"
   chrome_options.add_argument("disable-infobars");
   driver = webdriver.Chrome(chrome_options=chrome_options)

   driver.get("http://www.google.com/")
   while(True):
       pass
launchBrowser()
Run Code Online (Sandbox Code Playgroud)

  • 这是唯一一个正在工作的。 (2认同)

Pet*_*rov 5

我的猜测是驱动程序被垃圾收集,在C++中,函数(或类)中的对象在脱离上下文时会被破坏.Python不是以相同的方式工作,但它是一种垃圾收集语言.一旦不再引用对象,将收集对象.

要解决您的问题,您可以将对象引用作为参数传递,或返回它.

    def launchBrowser():
       chrome_options = Options()
       chrome_options.binary_location="../Google Chrome"
       chrome_options.add_argument("start-maximized");
       driver = webdriver.Chrome(chrome_options=chrome_options)

       driver.get("http://www.google.com/")
       return driver
    driver = launchBrowser()
Run Code Online (Sandbox Code Playgroud)


小智 5

一旦驱动程序的变量超出范围,浏览器就会自动处理。因此,为了避免退出浏览器,您需要在全局变量上设置驱动程序的实例:

Dim driver As New ChromeDriver

Private Sub Use_Chrome()

driver.Get "https://www.google.com"
'  driver.Quit
End Sub
Run Code Online (Sandbox Code Playgroud)