鏈接: 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")