如何在Selenium WebDriver命令中传递参数以重构浏览器操作代码
解决Selenium浏览器驱动动态调用问题
你遇到的核心问题是:直接写webdriver.browser_name()时,Python会把browser_name当成webdriver模块的固定属性名,而不是你传入的变量值,自然找不到对应的浏览器驱动类。
正确实现方式
用Python内置的getattr()函数,它能根据字符串动态获取对象的属性或类。修改后的函数如下:
import time from selenium import webdriver def go_to_baidu(browser_name): # 动态获取对应的浏览器驱动类 browser_class = getattr(webdriver, browser_name) driver = browser_class() driver.get('http://www.baidu.com') time.sleep(2) driver.quit()
调用示例
# 启动Chrome访问百度 go_to_baidu('Chrome') # 启动Firefox访问百度 go_to_baidu('Firefox')
可选优化:增加参数校验
为避免传入无效浏览器名导致报错,可以加一层校验逻辑:
import time from selenium import webdriver def go_to_baidu(browser_name): valid_browsers = ['Chrome', 'Firefox', 'Edge', 'Safari'] if browser_name not in valid_browsers: raise ValueError(f"不支持该浏览器,可选值:{valid_browsers}") browser_class = getattr(webdriver, browser_name) driver = browser_class() driver.get('http://www.baidu.com') time.sleep(2) driver.quit()
内容的提问来源于stack exchange,提问作者Jeff
相关产品推荐
相关产品推荐

