selenium安裝及使用

項目說明

爲實現定時模擬用戶上網的功能,並找出網頁元素訪問速度瓶頸,採用selenium 模擬瀏覽器方案測試網絡情況。
使用selenium需要依賴firefox(其他瀏覽器未嘗試),以及Xvfb虛擬顯示。

安裝

selenium

xxx@ubuntu-svr:~$ pip install selenium

geckodriver

下載地址爲https://github.com/mozilla/geckodriver/releases,請自行選擇合適版本
適用於Firefox 48版本及以上,解壓到/usr/bin/ 目錄。

xxx@ubuntu-svr:~$ sudo apt-get update
xxx@ubuntu-svr:~$ sudo apt-get install firefox
xxx@ubuntu-svr:~$ cd /usr/bin && wget https://github.com/mozilla/geckodriver/releases/download/v0.20.0/geckodriver-v0.20.0-linux64.tar.gz
xxx@ubuntu-svr:~$ sudo tar zxvf geckodriver-v0.20.0-linux64.tar.gz

如果出現:
selenium.common.exceptions.WebDriverException: Message: connection refused
先查看日誌 geckodriver.log
如果出現Error: GDK_BACKEND does not match available displays ,說明需要安裝虛擬屏幕。

Xvfb

xxx@ubuntu-svr:~$ pip install pyvirtualdisplay
xxx@ubuntu-svr:~$ sudo apt-get install xvfb

python文件中添加

from pyvirtualdisplay import Display

display = Display(visible=0, size=(800, 600))
display.start()

#your code#

display.stop()

注意!!!:無stop,xvfb進程不會停止,內存泄漏。

示例

from pyvirtualdisplay import Display
from selenium import webdriver
import json
import time

# Attention: start Xvfb
display = Display(visible=0, size=(800, 600))
display.start()
# Get local session of firefox
browser = webdriver.Firefox() 

url_in_queue = "http://www.taobao.com"

# Load page (wait 3 seconds to finish the GET request)
browser.get(url_in_queue) 
time.sleep( 3 )

p_timing = browser.execute_script("return window.performance.timing")
#p_getEntries = browser.execute_script("return window.performance.getEntries()") 

pageloadtime = p_timing["loadEventStart"] - p_timing["navigationStart"]  #onload
dns = p_timing["domainLookupEnd"] - p_timing["domainLookupStart"]  #dns
tcp = p_timing["connectEnd"] - p_timing["connectStart"]  #tcp
ttfb = p_timing["responseStart"] - p_timing["navigationStart"]  #ttfb

# Print result
print("onload    %10.2f ms"%(pageloadtime))
print("dns       %10.2f ms"%(dns))
print("tcp       %10.2f ms"%(tcp))
print("ttfb      %10.2f ms"%(ttfb))  

browser.quit()
display.stop()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章