【分享】python反射机制-在启动浏览器上的运用

根据关键字启动一个浏览器,一般是这样的写法:

from selenium import webdriver

def browser(driver_type):
    if driver_type=='chrome':
        driver = webdriver.Chrome()
        return driver

    elif driver_type=='firefox':
        driver = webdriver.Firefox()
        return driver

    elif driver_type=='ie':
        driver = webdriver.Ie()
        return driver

driver_type='chrome'
driver=browser('chrome')
print(driver)

还有种写法:

driver_type='chrome'
driver_dict={
    'chrome':webdriver.Chrome,
    'firefox':webdriver.Firefox,
    'ie':webdriver.Ie
}
driver=driver_dict[driver_type]

下面要说的是另一种写法,在python中有一个函数叫getattr, 是获取对象属性或方法的函数。
https://www.runoob.com/python/python-func-getattr.html

基于此,可以利用关键字直接启动对应的浏览器,代码如下:

driver_type='chrome'
driver =getattr(webdriver,driver_type.capitalize())
print(driver)
5 Likes

学院内部有个基于元编程实现的数据驱动框架,因为有点难度,所以没敢对外教,还是采用了比较传统应用广泛的方法。

使用词典代替if elif是一个python的小技巧,不过你的写法应该在driver=driver_dict[driver_type]后少了一个()吧

谢谢提醒,是的,漏写了

关闭