链接: 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")
转载于:https://blog.51cto.com/ehealth/1731275