使用webdriver 的库后,写了一个类,类中定义了一个open_url的方法,运行后却无法打开浏览器
from selenium import webdriver
import os
from Common.getconf import Config
from Common.getfiledir import BASEFACTORYDIR
import time
import win32gui
import win32con
from pywinauto import application
# 创建一个名为BrowserOperator的类,初始化配置类的对象,获取到浏览器类型的配置项,得到浏览器的驱动目录
class BrowserOperator(object):
def _init_(self):
self.conf = Config()
self.driver_path = os.path.join(BASEFACTORYDIR, 'chromedriver.exe')
self.driver_type = str(self.conf.get('base', 'browser_type')).lower()
# 打开浏览器,方法使用了不定长参数 **kwargs接收传参,所以只能传指定参数或整个字典
#判断是哪个浏览器,然后指定驱动浏览器打开url。
def open_url(self,**kwargs): #可以写成url = kwargs.get('locator'),就不需要try了,但要判断url是不是为None,是None还是要return False,
# ‘没有参数’,两个返回值是全框架设计的返回形式,用一个布尔值确认我的用例执行的成败,后面返回对象或执行日志。
"""
打开网页
:param url:
:return: 返回webdriver
"""
# 可以写成url = kwargs.get('locator'),就不需要try了,但要判断url是不是为None,是None还是要return False, ‘没有参数’,
# 两个返回值是全框架设计的返回形式,用一个布尔值确认我的用例执行的成败,后面返回对象或执行日志。
try:
url = kwargs['locator'] #kwargs里如果有locator,这是用例用例设计的一个参数,它负责传url与元素定位
except:
return False,'没有URL参数'
try: # 外围包了一个try,就是如果浏览器驱动失败了,我们将返回一个Flase和异常,如果成功了,返回一个True 和浏览器 对象driver,
if self.driver_type == 'chrome':
# 处理chrom弹出的info
# chrome_options = webdriver.ChromeOptions()
# #option.add_argument('disable-infobars')
# chrome_options.add_experimental_option("excludeSwitches", ['enable-automation'])
# self.driver = webdriver.Chrome(options=chrome_options, executable_path=self.driver_path)
self.driver = webdriver.Chrome(executable_path=self.driver_path) #核心代码
# 此时代码会自动帮我们打开一个浏览器,将浏览的句柄赋值给self.driver。这个句柄是操作网页元素的一个把手,不到浏览器关闭,它不会释放。
self.driver.maximize_window() #将窗口最大化
self.driver.get(url) #打开传入的url地址
elif self.driver_type == 'ie':
print('IE浏览器')
else:
print('火狐浏览器')
except Exception as e:
return False,e
return True, self.driver
wd = BrowserOperator()
wd.open_url(locator='https://www.qq.com') # 指定传参:locator='https://ww.....'
没有报错,但是却无法打开浏览器
Process finished with exit code 0
运行以下的代码是可以打开浏览器的:
# driver = webdriver.Chrome()
# driver.get(url='http://www.baidu.com')
# driver.quit()