一、Chrome浏览器自动关闭

因为把driver = webdriver.Chrome()放在了函数内部,在函数执行完毕之后,程序内所有的步骤都结束了,关于这段程序的进程也就结束了,浏览器包含在内,所以才会自动退出。

from selenium import webdriver
class TestKeyWords(object):
    #初始化
    def __init__(self,browser_type):
        self.open_browser(browser_type)
    #调用浏览器
    def open_browser(self,browser_type):
        if browser_type == 'chrome':
            self.driver = webdriver.Chrome()
            self.driver.get('https://blog.csdn.net/')
        elif browser_type == 'firefox':
            self.driver = webdriver.Firefox()
        else:
            print('type error')

if __name__ == '__main__':
    TestKeyWords('chrome')

二、解决方案

设置全局变量,即把打开浏览器的操作放在函数外部,函数执行完毕,浏览器就不会关闭

from selenium import webdriver

class TestKeyWords(object):

    #初始化
    def __init__(self,browser_type):
        self.open_browser(browser_type)
    #调用浏览器
    def open_browser(self,browser_type):
        #定义全局变量
        global driver
        if browser_type == 'chrome':
            driver = webdriver.Chrome()
            driver.get('https://blog.csdn.net/')
        elif browser_type == 'firefox':
            driver = webdriver.Firefox()
        else:
            print('type error')

if __name__ == '__main__':
    TestKeyWords('chrome')

三、原理

关闭浏览器代码统一换成Firefox浏览器的话,不会自动关闭浏览器,是因为对应chrome浏览器厂家提供的浏览器源生驱动文件自身逻辑设置引起的,方法运行完全会自动关闭回收方法中定义的局部变量。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐