链接: http://pan.baidu.com/s/1hrtgFAk 密码: 8zhd
if env.threadlocal.TESTING_BROWSER.upper() == 'FIREFOX': fp = FirefoxProfile() fp.native_events_enabled = False if env.FIREFOX_BINARY == '': try: env.THREAD_LOCK.acquire() browser = webdriver.Firefox(firefox_profile=fp) except: if isinstance(env.RESERVED_FIREFOX_BINARY, str) and env.RESERVED_ FIREFOX_BINARY != "": browser = webdriver.Firefox(firefox_profile=fp, firefox_binary=FirefoxBinary(firefox_path=env.RESERVED_FIREFOX_BINARY)) else: try: log.step_warning("try to start firefox again!") time.sleep(20) browser = webdriver.Firefox(firefox_profile=fp) except: log.handle_error() return False finally: env.THREAD_LOCK.release() else: browser = webdriver.Firefox(firefox_profile=fp, firefox_binary=FirefoxBinary(firefox_path=env.FIREFOX_BINARY))
这里主要涉及到了python对于Firefox的操作。
首先是FirefoxProfile()这个软件包里面,定义的是如何去选取firefox的profile文件。包含了一些插件跟拓展。如果没有的话。Firefox是默认自己组织一个临时的profile然后去运行Firefox
接着是FirefoxBniary()这个软件包。这个接收一个path的参数。定义的是firefox.exe的路径。
b=FirefoxProfile("D:\Soft\Firefox\Profiles\V6") #这里用的是41版本的火狐浏览器 c=FirefoxBinary(firefox_path="D:\\Soft\\Firefox\\Firefox\\firefox.exe") a=webdriver.Firefox(firefox_profile=b,firefox_binary=c)
在我的机器上有一个安装版的firefox。一个绿色版的firefox,版本分别为43 和41.当我设置了FirefoxBinary()以后。调用的是41版本的Firefox。
接着。我们可以启动以下代码。看一下selenium关于python的代码:
python -m pydoc -p 1234 #在浏览器输入localhost:1234
可以分别看到这两个里面还有一些方法:
FirefoxProfile:add_extension(self,extension="xxx.xpi") √
set_preference(self,key,value) 不会用
set_proxy(self,proxy) 不会用
update_preference(self) 不会用
FirefoxBinary:kill(self)
launch_browser(self,profile)
which(self,filename) 通过搜索所给的filename,返回一个完整的合格的path
当然,以上那些方法就用了add_extension(),其他的都还不会用,也没用到。
接下去看到的是关于IE和Chrome的调用。需要用到驱动。
elif env.threadlocal.TESTING_BROWSER.upper() == 'CHROME': if env.DRIVER_OF_CHROME == '': print ('DRIVER_OF_CHROME is empty.') return False os.environ['webdriver.chrome.driver'] = env.DRIVER_OF_CHROME browser = webdriver.Chrome(executable_path=env.DRIVER_OF_CHROME) elif env.threadlocal.TESTING_BROWSER.upper() == 'IE': if env.DRIVER_OF_IE == '': print ('DRIVER_OF_IE is empty.') return False #杀死进程 os.popen('TASKKILL /F /IM IEDriverServer.exe') dc = DesiredCapabilities.INTERNETEXPLORER.copy() dc['nativeEvents'] = False dc['acceptSslCerts'] = True os.environ['webdriver.ie.driver'] = env.DRIVER_OF_IE browser = webdriver.Ie(executable_path=env.DRIVER_OF_IE, capabilities=dc)
这里面有有一个python中的os模块。使用
dir(os) help(os.environ)
environ是一个字符串所对应环境的映像对象.通常用于跨平台.
os.environ["webdriver.chromedriver.exe"] #相当于把这个参数加入到了环境变量中。这样就 相当于一个全局的变量了
接下去是关于如何启动chrome浏览器:
import os os.environ["webdriver.chromedriver.exe"]="D:\\chromedriver.exe" browser=webdriver.Chrome(executable_path="D:\\chromedriver.exe")
os.popen(" ")可以返回内容,例如:
t=os.popen("ping 198.123.1.1") print t.read()
这里IE会去杀死进程,为什么chrome不去杀死chromedriver的进程?难道是IE的特殊性?
启动IE:
os.environ['webdriver.IEdriver']="D:\\IEDriverServer" b=webdriver.Ie(executable_path="D:\\IEDriverServer")
本文出自 “ehealth” 博客,谢绝转载!