selenium安装及使用

本文介绍了在Ubuntu系统中如何安装和使用selenium及geckodriver进行网页自动化测试。首先,解释了项目背景是为了模拟用户上网并检测网页元素速度。接着详细阐述了安装selenium和geckodriver的步骤,包括从GitHub下载geckodriver并将其放置在适当目录。同时,由于可能出现的权限问题,文章提到了检查错误日志的建议。当遇到'权限被拒绝'的错误时,文章建议安装Xvfb,并给出了在配置文件中添加启动命令的方法,特别提醒注意Xvfb进程管理以防止内存泄漏。最后,文章暗示将提供使用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目说明

为实现定时模拟用户上网的功能,并找出网页元素访问速度瓶颈,采用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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值