1. 程式人生 > >ubuntu 16.04 搭建python+selenium+firefox環境

ubuntu 16.04 搭建python+selenium+firefox環境

1.搭建web自動化環境需要對應版本的firefox,selenium以及瀏覽器驅動,三者對應關係可查詢https://github.com/mozilla/geckodriver/releases/

2.經過樓主測試以及查閱資料發現firefox 48以下的版本不需要安裝驅動 對應selemium2,我們也知道Ubuntu是自帶firefox。目前,我刷出的系統firefox也是45.0.2的版本,系統資訊如下:
[email protected]:~$ uname -a
Linux pi-ThinkPad-X220 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:34:49 UTC 2016 i686 i686 i686 GNU/Linux

[email protected]:~$ cat /etc/os-release
NAME=“Ubuntu”
VERSION=“16.04 LTS (Xenial Xerus)”
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME=“Ubuntu 16.04 LTS”
VERSION_ID=“16.04”
HOME_URL=“http://www.ubuntu.com/
SUPPORT_URL=“http://help.ubuntu.com/
BUG_REPORT_URL=“http://bugs.launchpad.net/ubuntu/
UBUNTU_CODENAME=xenial

3.也可以更換軟體源下載火狐瀏覽器
1)sudo apt-cache madison firefox–檢視各個源安裝的firefox版本
2)sudo nano /etc/apt/sources.list–編輯源
3)sudo apt-get update–更新源
4)sudo apt-get install firefox–下載對應源的火狐,然後檢視火狐版本

4.pip安裝selenium以及相關類庫
1)安裝pip:sudo apt-get install python-pip python-dev build-essential
2)sudo -H pip install pyvirtualdisplay
3)sudo -H pip install selenium==2.53.1

5.測試程式碼

from selenium import webdriver
from pyvirtualdisplay import Display
from selenium.webdriver.support.ui import WebDriverWait

class webControl:
	url = r'http://www.baidu.com' 
	def testDemo():
	 	try:
			# 相當於畫布承載網頁
            display = Display(visible=0, size=(800, 600)) 
            display.start()
            print('當前正在訪問: %s' % url)
            driver = webdriver.Firefox()
            # 設定網頁載入報錯時間
            driver.set_page_load_timeout(15)
            current_time = float(time.time())
            driver.get(url)
            openweb_time = float(time.time()) - current_time
            # 網頁標題,用於判斷網頁是否開啟
            str = driver.title
        except:
            str = ''
        finally:
            if "百度一下" in str:
            	print('開啟網頁的時間為:%ss' % ((i + 1), openweb_time))
            else:
            	print('開啟網頁失敗')
            display.stop()
            driver.quit()
            
if __name__ == '__main__':
    webControl.testDemo()

當然,你也可以直接在終端裡測試!