21
2020
03

Firefox driver for python selenium

https://stackoverflow.com/questions/26070834/how-to-fix-selenium-webdriverexception-the-browser-appears-to-have-exited-befor


sudo apt-get install xvfb

sudo pip install pyvirtualdisplay


#!/usr/bin/env python


from pyvirtualdisplay import Display

from selenium import webdriver


display = Display(visible=0, size=(1024, 768))

display.start()


browser = webdriver.Firefox()

browser.get('http://www.ubuntu.com/')

print browser.page_source


browser.close()

display.stop()









https://www.itread01.com/content/1544654541.html


sample:

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()

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

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。