python菜鸡使用selenium出问题请指教

python菜鸡使用selenium出问题请指教,第1张

1.打开默认的chrome

在python版的Webdriver中要打开chrome浏览器,需要安装chromedriver.exe。。

将这个chromedriver.exe放置在chrome的安装目录下 相对路径为 …\Google\Chrome\Application\,然后设置path环境变量,把chrome的安装目录地址放入path变量中。我的安装目录是C:\Program Files\Google\Chrome\Application,也即是在path变量的最后,加上此目录即可,然后尝试在python中运行

from selenium import webdriver

driver = webdriver.Chrome()

若不报错,即代表安装成功。

2.打开本地的Chrome

import os

from selenium import webdriver

from selenium.webdriver.chrome.options import Options

from time import sleep

executable_path = "C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe" //指定chromediver的位置,如果在默认路径,这两行可以省略。

os.environ["webdriver.chrome.driver"] = executable_path

options = webdriver.ChromeOptions() //定义配置对象

options.add_argument("--user-data-dir="+r"C:/Users/cui/AppData/Local/Google/Chrome/User Data/")

//指定用户的配置地址,并加载至配置对象中。

browser = webdriver.Chrome(executable_path,chrome_options=options)

//此处注意,有两个参数,后面那个参数,一定要写成 chrome_options=XX的形式,否则运行报错。

备注:chrome的用户配置数据,在c盘的user用户下,可能有些人不能找到此目录,这是因为AppDate文件夹是默认隐藏的,需要进入文件夹选项去设置一下即可。

设置浏览器参数

为了避免每次运行程序都打开一个窗口,我们也可以设置无窗口访问,只需添加浏览器参数即可:

from selenium import webdriver

from selenium.webdriver.chrome.options import Options

url = ' https://www.baidu.com/'

chrome_options = Options()

chrome_options.add_argument('--headless')

chrome_options.add_argument('lang=zh_CN.utf-8')

UserAgent = 'Mozilla/5.0 (Windows NT 10.0Win64x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36'

chrome_options.add_argument('User-Agent=' + UserAgent)

driver = webdriver.Chrome(chrome_options=chrome_options)

driver.maximize_window()

driver.minimize_window()

driver.get(url)

print(driver.title)

常用参数

启动就最大化--start-maximized

指定用户文件夹 User Data 路径,可以把书签这样的用户数据保存在系统分区以外的分区–-user-data-dir=”[PATH]”

指定缓存Cache路径–-disk-cache-dir=“[PATH]” 指定Cache大小,单位Byte–-disk-cache-size=100

隐身模式启动–-incognito

禁用Javascript–-disable-javascript# 禁止加载所有插件,可以增加速度--disable-plugins

禁用JavaScript--disable-javascript

禁用d出拦截--disable-popup-blocking

禁用插件--disable-plugins

禁用图像--disable-images

设置代理chrome_options.add_argument('--proxy-server=http://{ip}:{port}') #http://127.1.1.10:8080

服务器在阿里云上,将apt源换成阿里的之后,直接 sudo apt install firefox 即可。

Firefox运行还需要D-BUS,因此同时还需要 sudo apt install dbus-x11

xvfb这个仿真框架使用虚拟内存能让X-Server运行在没有显示设备的机器上。这样,浏览器就可以运行了。在ubuntu和Debian上安装xvfb,只要运行:

sudo apt-get install xvfb

现在,可以运行xvfb服务上一个带有数字的显示设备上,这样是为了防止你在下阶段添加设备时引发冲突。用以下命令分配一个显示设备 10..

sudo Xvfb :10 -ac

-ac代表关闭xvfb的访问控制。

在你运行浏览器前,你首先要设置DISPLAY环境变量,以指定xvfb运行在哪个显示设备上。在加入环境变量前,我们检查一下所有的这些都如我们所料:

如果终端(terminal)没有显示错误,就说明你已经成功运行Firefox在无显示设备的ubuntu上了。它会一直运行,直到你使用ctrl + C或其它类似方法来终止其运行。同时,它不会有任何输出。

如果你能成功运行以上的步骤,那么接下来的部分就是轻而易举了。现在,我们可以在ubuntu服务器上运行selenium,如同你在本地运行一样。

安装完成后,将geckodriver所在路径写入PATH中,之后就可以在服务端进行selenium测试

笔者使用的shell是zsh,为了把PATH和DISPLAY这两个变量固定下来,在 ~/.zshrc 中将下面两句语句写入

安装xvfb之后,可以考虑使用python库pyvirtualdisplay,防止出现geckodriver出现GBK_BACKEND相关错误


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11334512.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存