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

时间:2017-11-27 10:17:06

标签: python google-chrome selenium selenium-chromedriver

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

此代码运行良好,打开谷歌浏览器和Chrome保持打开状态。:

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/")

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

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()

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

9 个答案:

答案 0 :(得分:3)

只需添加:

while(True):
    pass

功能结束。会是这样的:

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()

答案 1 :(得分:2)

要使钻头保持打开状态,我正在这样做:

rand.nextInt(2);

答案 2 :(得分:1)

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

Dim driver As New ChromeDriver

Private Sub Use_Chrome()

driver.Get "https://www.google.com"
'  driver.Quit
End Sub

答案 3 :(得分:1)

遇到同样问题的人,只需将驱动程序设置为全局即可,简单如下:

global driver
driver.get("http://www.google.com/")

这解决了我这边的问题,希望这会有所帮助

答案 4 :(得分:0)

根据您共享的代码块,可以有以下3种可能的解决方案:

  • binary_location中,您必须将 .. 更改为 . .表示项目工作区)
  • binary_location中,您必须将 .. 更改为 /myspace/chrome (绝对Chrome二进制文件)
  • 启动驱动程序时,添加开关executable_path

    driver = webdriver.Chrome(chrome_options=options, executable_path=r'/your_path/chromedriver')
    

答案 5 :(得分:0)

这有点老了,但是这里的答案并不能解决问题。谷歌搜索使我来到这里

http://chromedriver.chromium.org/getting-started

此处的测试代码使用sleep来保持浏览器打开。我不确定是否有更好的选择,所以我将在学习时进行更新。

import time
from selenium import webdriver

    driver = webdriver.Chrome('/path/to/chromedriver')  # Optional argument, if not specified will search path.
    driver.get('http://www.google.com/xhtml');
    time.sleep(5) # Let the user actually see something!
    search_box = driver.find_element_by_name('q')
    search_box.send_keys('ChromeDriver')
    search_box.submit()
    time.sleep(5) # Let the user actually see something!
    driver.quit() 

答案 6 :(得分:0)

我的解决方案是先在 init 函数中定义驱动程序,然后甚至不会关闭浏览器。

答案 7 :(得分:0)

为防止这种情况发生,请确保您的 driver 变量在您的函数之外定义或定义为全局变量,以防止在函数执行完成后立即对其进行垃圾回收。

在上面的例子中,这可能意味着:

driver = webdriver.Chrome(chrome_options=get_options())

def get_options():
   chrome_options = Options()
   chrome_options.binary_location="../Google Chrome"
   chrome_options.add_argument("disable-infobars")
   return chrome_options

def launchBrowser():
   driver.get("http://www.google.com/")

launchBrowser()

答案 8 :(得分:-1)

def createSession():
    **global driver**
    driver = webdriver.Chrome(chrome_driver_path)
    driver.maximize_window()
    driver.get("https://google.com")
    return driver