selenoid环境搭建

启动 Selenoid:

从GitHub https://github.com/aerokube/cm/releases/tag/1.8.7 版本下载适用于您的平台 (linux/darwin/windows) 的最新版本二进制文件。

下载后上传到服务器
# 修改文件名
   mv cm_linux_amd64 cm

  # 将文件变成可执行文件,输入命令
  chmod +x cm
  # 运行一个命令来启动selenoid, 会自动下载selenoid镜像和浏览器镜像,并启动。默认占用宿主机端口4444, 如果当前4444端口被占用,就会启动失败。
  ./cm selenoid start --vnc

  # 启动UI界面,会自动下载selenoid-ui镜像,并启动
  ./cm selenoid-ui start

启动成功后输入:http://你服务器的ip:4444,可查看服务启动情况。出面以下语句,代表服务能被访问到。
You are using Selenoid 8ff53e075e67207e98822bf1516f64fda2803741!

如果你无法访问,请检查防火墙或云服务安全组开放端口

亲测华为云4444端口开放后也无法访问,原因不详

自定义启动命令,前提是已经执行过了./cm selenoid start --vnc命令
先查看docker容器是否已经启动, 如果启动需要停止并删除容器

docker run -d --name selenoid -p 5555:4444 -e TZ=Asia/Shanghai \
-v /root/.aerokube/selenoid/:/etc/selenoid/ \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /root/.aerokube/selenoid/video/:/data/selenoid/video/ \
-e OVERRIDE_VIDEO_OUTPUT_DIR=/root/.aerokube/selenoid/video/ \
--privileged aerokube/selenoid:latest \
-conf /etc/selenoid/browsers.json -limit 10  -video-output-dir /data/selenoid/video/

selenoid-ui
  文档地址: http://aerokube.com/selenoid-ui/latest/#_documentation
  github: https://github.com/aerokube/selenoid-ui
  selenoid已经集成了selenoid-ui,具体可以看官方文档,一键启动./cm selenoid-ui start
  自定义启动命令,前提是已经启动好selenoid的服务。

docker run -d --name selenoid-ui --privileged=true -p 8888:8080 aerokube/selenoid-ui --selenoid-uri http://{主机ip}:5555

参数说明

  --privileged=true 必须加,防止docker权限错误问题。
  -p 8888:8080 8888是宿主机端口号,8080是容器端口号,容器端口号不要改。
  --selenoid-uri 指定selenoid的地址,例子:我们上面配置的selenoid的端口号是5555,这里就是:http://你的ip地址(不要用127.0.0.1/localhost):5555

启动成功后,如果出现无法访问时,请确保8888端口被放行,或者安全组被放。

 如果出现没有浏览器可选的情况,就是selenoid的浏览器配置文件出现问题,具体可查看.aerokube\selenoid\browsers.json,尝试更改port字段,其他保持不变。

调试服务
  以下是python脚本编写的方式调用远程浏览器

import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By

chrome_options = Options()
chrome_options.browser_version = '123.0'
chrome_options.set_capability("selenoid:options", {
    "enableVNC": True,
    "enableVideo": True
})

driver = webdriver.Remote(
    command_executor="http://{主机ip}/wd/hub",
    options=chrome_options
)
driver.maximize_window()
print(driver.session_id)
driver.get("https://www.baidu.com")
driver.find_element(By.ID, "kw").send_keys("淘宝")
time.sleep(5)
driver.close()
driver.quit()

posted @ 2024-05-09 14:59  牧羊人の冬天  阅读(31)  评论(0编辑  收藏  举报