将浏览器配置文件传递给 docker 容器内的 selenium 的正确方法是什么?

2024-04-25

我需要启动selenium inside docker容器。将浏览器配置文件传递给很重要webdriver.

Here's docker-compose:

version: '2'

services:
  worker_main:
    build: ./app
    volumes:
      - /Users/username/Library/Application Support/Google/Chrome/Profile 1:/profile
    restart: always
    env_file:
      - config.env
    networks:
      - backend
    depends_on:
      - chrome

  chrome:
    image: selenium/standalone-chrome
    restart: always
    ports:
      - 4444:4444
    hostname: chrome
    networks:
      - backend

networks:
  backend:

这是驱动程序代码:

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("user-data-dir=/profile")

driver = webdriver.Remote("http://chrome:4444/wd/hub", options=options)

结果我发现了这个错误:

selenium.common.exceptions.WebDriverException:消息:未知错误:无法创建默认配置文件目录


你可以尝试这样做:

$ docker run --rm -p 4444:4444 -p 5900:5900 \
  -v /tmp/chrome_profiles:/tmp/chrome_profiles \
  -e JAVA_OPTS selenium/standalone-chrome:latest

or

# To execute this docker-compose yml file use `docker-compose -f <file_name> up`
# Add the `-d` flag at the end for detached execution
version: '2'
services:
  chrome:
    image: selenium/node-chrome:latest
    volumes:
      - /dev/shm:/dev/shm
      - /tmp/chrome:/tmp/chrome_profiles
    ports:
      - "5900:5900"
    depends_on:
      - hub
    environment:
      HUB_HOST: hub

  hub:
    image: selenium/hub:latest
    ports:
      - "4444:4444"

然后需要通过 ChromeOptions 传递配置文件路径,请记住这是容器内的路径。示例代码:

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("-profile", "/tmp/chrome_profiles/<replace_with_profile_id>.selenium");

WebDriver driver = new RemoteWebDriver(new URL("http://hub:4444/wd/hub"), chromeOptions);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将浏览器配置文件传递给 docker 容器内的 selenium 的正确方法是什么? 的相关文章

  • jinja2.exceptions.TemplateNotFound:index.html

    我尝试使用 Flask 打开 index html run py from app import app app run debug True init py from flask import Flask app Flask name f
  • 如何在多个端口上运行 FastAPI 应用程序?

    我有一个 FastAPI 应用程序 正在使用 Uvicorn 以编程方式在端口 30000 上运行 现在我也想在端口 8443 上运行相同的应用程序 相同的应用程序需要在这两个端口上运行 我怎样才能在Python代码中做到这一点 最小可重现
  • 生成非连续组合

    我正在尝试创建一个生成器 支持执行 next 的迭代器 可能在 python 中使用yield 它给出来自 1 2 n n 和 r 是参数 的 r 元素的所有组合 这样在选出的r个元素 没有两个是连续的 例如 对于 r 2 且 n 4 生成
  • Redis SYNC 套接字上的错误情况:连接被拒绝

    在我的 django 应用程序中使用 celery 和 redis 一切都工作正常 直到我遇到了问题 redis 文件的位置已更改 redis 无法访问它们 经过查找 原来这是由于网络随机攻击造成的 需要添加confg 我添加文件后 一段时
  • pyqt5调用url时处于无响应状态

    我刚刚在 pyqt 中实现了登录 但在调用 url 和获取响应之间 qt 窗口显示无响应状态 谁能建议我如何避免不响应状态 code class Login QDialog def init self height width parent
  • 如何动态构造方法?

    我设计了一个类 它非常标准 具有一些方法属性 class foo def f1 self print f1 def f2 self print f2 def fn self print fn 现在我想创建一个包含一组 foo 实例的类 cl
  • 如何使用 XPath 和 Selenium Webdriver 提取 XML 数据

    我正在使用 Selenium Webdriver ver 2 31 2 0 Net 我正在尝试提取从 driver PageSource 返回的元素 XML 我的问题 如何使用下面的 xpath 获取项目列表 我可以使用 XPATH 插件在
  • 使用 PyQt4 在 QWidget 上进行 eventFilter

    我有一个 QMainWindow 其中包含DrawingPointsWidget 该小部件随机绘制红点 我通过使用以下命令为 MouseHovering 事件安装事件过滤器 在 QMainWindow 的状态栏中显示鼠标坐标self ins
  • 用python计算网页大小

    我将如何使用 Python 计算网页 url 的大小 我尝试了 urllib2 并获取内容长度标头 但它不存在 import urllib2 url http www google com r urllib2 urlopen url Not
  • 有效地减去不同形状的 numpy 数组

    使用 numpy 出色的广播规则 您可以减去形状 3 数组v来自形状 5 3 数组X with X v 结果是一个形状 5 3 数组 其中每一行i是有区别的X i v 有没有办法减去形状 n 3 数组w from X使得每一行w从整个数组中
  • Apache2 mod_wsgi 403 禁止错误

    我已经正确配置了它 但后来我决定重新安装我的 Debian 顺便从 wheezy 切换到 jessie 版本 问题是这样的 我有一个 python mod wsgi 应用程序 mnt doc Python www index py ls l
  • 如何在 python 中将 selenium webelement 转换为字符串变量

    from selenium import webdriver from time import sleep from selenium common exceptions import NoSuchAttributeException fr
  • 如何使用 OpenCV 检测图像帧中的对象?

    我正在使用 Raspberry Pi 开发一个漫游器 它将清扫房间并捡起掉落在地上的物体 为了检测物体 我使用了在流动站操作开始时拍摄的参考图像 以及每 10 秒单击一次的图像 新图像 为了确定图像帧是否发生变化 我在参考图像和新图像之间进
  • 您忽略了哪些 PEP 8 准则,哪些是您坚持的? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 多年来 我编写的 Python 越多 我就越发现自己同意大多数准则 尽管我出于自己的原因始终有意地违反了一些准则 我很想知道 PEP 8 也可能
  • 如何在 Python 中小写字符串?

    有没有办法将字符串转换为小写 Kilometers kilometers See How to change a string into uppercase https stackoverflow com questions 9257094
  • 如何使用 python / pywinusb 将 hid 数据发送到设备?

    我正在尝试使用 pywinusb 将输出报告发送到 pic18f4550 该设备可以接收数据 我已经使用 C 应用程序对其进行了测试 效果很好 另外 我可以使用 pywinusb 从设备读取数据 但我在尝试发送数据时遇到问题 这是我正在运行
  • 日志处理程序是否使用单独的线程?

    蟒蛇的日志处理程序 http docs python org library logging handlers html都很棒 其中一些 例如SMTP处理程序 http docs python org library logging han
  • hashlib 和 urandom 哪个更随机?

    我正在和一个朋友一起开发一个项目 我们需要生成随机哈希 在我们有时间讨论之前 我们都提出了不同的方法 并且因为他们使用不同的模块 我想问你们大家什么会更好 如果有这样的事情的话 hashlib sha1 str random random
  • Python Shutil.copy 如果我有重复文件,它会复制到新位置吗

    我正在与shutil copypython 中的方法 我找到了下面列出的定义 def copyFile src dest try shutil copy src dest eg src and dest are the same file
  • 如何提取Python代码文件中使用的函数?

    我想创建代码文件中使用的所有函数的列表 例如 如果我们在名为 add random py 的文件中有以下代码 import numpy as np from numpy import linalg def foo print np rand

随机推荐

  • 检查每个页面请求的标头

    我需要检查每个页面请求的请求标头 我认为尝试这个的地方应该是在 撇号 express 模块中 我创建了自己的模块 auth 它扩展了 apostrope express module exports extend apostrophe ex
  • Vim - 删除多行中的直到(包括)字符

    我有这个代码 def foo c Char c match case a B 我的光标位于后面的空格上 我想删除所有内容 直到 包括 我怎样才能做到这一点 我可以在光标位于第一行任意位置时执行相同操作吗 块中的任何位置 并将光标放在 d e
  • 动态添加的 Facebook 发送按钮未呈现

    我想在页面加载后动态添加一个 Facebook 发送按钮 iframe 尚不支持 由于网站的构建方式 它将成为通过 AJAX 在用户上加载的 HTML 模板的一部分 行动 虽然我正在导入 FB JavaScript SDK 但当我通过 AJ
  • Protractor/Jasmine 条件测试用例

    与此问题相关 如何使用 Protractor 创建条件测试用例 https stackoverflow com questions 36701985 how can i create conditional test cases using
  • 我可以使用什么方法从 VBA 调用 Web 服务?

    从 Excel 调用 Web 服务的最简单方法是什么 我使用的是 2002 版 请不要使用第三方工具或库 这必须很容易使用一些 VBA 我可以将其粘贴到那里 使用它并随时触摸 我不认为有任何特别简单的方法可以直接从 VBA 与 SOAP 对
  • 如何使用 Web3.js 或 Ethers.js 强制传输 NFT

    我正在尝试构建一个应用程序 其中一部分涉及将 NFT 从我的帐户转移到用户的帐户 以前 我使用 Moralis 来完成此任务 但这段代码抛出了一个错误 Error Contract with a Signer cannot override
  • 如何在 Javascript 中从 Firefox 剪贴板获取内容

    我非常沮丧地在我的 React 应用程序上从剪贴板进行粘贴 I used navigator clipboard readText 在 Chrome 浏览器上完美运行 但它在我最新的 Firefox 浏览器上不起作用 我尝试搜索SO 但与之
  • Spring Data Redis - Lettuce连接池设置

    尝试在 spring data redis 环境中设置 Lettuce 连接池 下面是代码 Bean LettuceConnectionFactory redisConnectionFactory GenericObjectPoolConf
  • Gulp - 术语“gulp”未被识别为 cmdlet 的名称

    当我开始一个新项目并创建一个新的 gulpfile 时 开始出现这个随机错误 每当我跑步时我都会得到它 这不仅发生在这个项目上 而且已经开始发生在所有其他项目上 我读到环境变量可能存在问题 所以我更新了这些变量 我最近还运行了 ruby 安
  • 在 javascript 中格式化日期直至毫秒

    我们正在使用来自 Microsoft 的以下 js 库https ajax aspnetcdn com ajax 4 0 1 MicrosoftAjax js https ajax aspnetcdn com ajax 4 0 1 Micr
  • Angular 2 --aot 导致 AnimationEntryMetadata 失败

    我的代码可以正常工作ng build and ng build prod但是 当我将 oat 添加到命令中时 它会失败并出现以下错误 Uncaught Error Module build failed Error C Users drem
  • Google 气泡图自定义工具提示列不呈现

    我正在尝试将自定义工具提示添加到气泡图中 以替换默认的工具提示 我已按照文档网站的说明进行操作 here https developers google com chart interactive docs customizing tool
  • MultipartFile 文件名中的特殊字符转换为?在春季启动

    我想知道为什么 spring boot 将 MultiPartFile 文件名特殊字符转换为 例如 pdf 转换为 pdf 我需要配置 Spring 来禁用此行为吗 我已经检查了我的 jvm 配置中的 file encoding 它已经设置
  • DRY:如何在 Symfony2 项目的多个实体中使用此代码?特质?

    我有一段重复的代码 将在我的 Symfony2 项目中的多个实体中使用 因此应用某种 DRY 就可以了 当然如果可能的话 我正在考虑PHP 特性 http php net manual en language oop5 traits php
  • 如何在M1 arm64架构上安装PyQt5?

    我有一台 M1 mac 但我注意到 每当本机 python 运行任何自动化脚本 如 PyAutoGui 时 它都会逐渐变得越来越慢 几乎就像受到了限制一样 我用 Miniforge3 创建了一个能够利用 Apple 芯片的环境 使脚本运行得
  • 如何制作进度条

    如何在 html css javascript 中制作进度条 我真的不想使用Flash 可以在这里找到类似的内容 http dustincurtis com about html http dustincurtis com about ht
  • 缩放 ImageView 的图像,同时将中心点保持在同一位置

    我已将预缩放位图设置为 ImageView 的源 然后我读了矩阵ImageView并通过以下方式移动 ImageView 的位图matrix postTranslate shiftX shiftY 现在我想放大 缩小图像 同时保持中心Ima
  • Android Volley POST Json 到服务器

    我正在使用 Volley 在 Android 设备和网络服务器之间传输数据 我发现有关将数据列表发送到服务器的问题 例如 我的类将生成如下数据集 1 1 aID 5 2 aID 5 3 aID 5 4 aID 5 2 1 bID 3 2 b
  • ArrayLists 比数组慢 2 倍

    我正在测试一种分子动力学算法 该算法除其他外 还有一个 Particle 类 由9 双精度数组存储粒子分量 3D 环境中的速度 力和位置 我使用 5 个输入大小测试算法 Size MB Time s 0 06 0 36 fits in ca
  • 将浏览器配置文件传递给 docker 容器内的 selenium 的正确方法是什么?

    我需要启动selenium inside docker容器 将浏览器配置文件传递给很重要webdriver Here s docker compose version 2 services worker main build app vol