【python】docker-selenium 分布式selenium模拟浏览器 |可视化 或 后台运行selenium 部署与使用

一、分布式selenium

1、部署 docker-selenium

Github官方地址如下:
https://github.com/SeleniumHQ/docker-selenium?tab=readme-ov-file

执行安装指令:

1、这里可以将dashboard映射接口改为 14444(记得开放安全组)

bash 复制代码
docker run --rm -it -p 14444:4444 -p 7900:7900 --shm-size 2g selenium/standalone-chrome

2、UI界面

访问网址:

1、这里映射的是14444端口

html 复制代码
http://127.0.0.1:14444/ui/

点击 《Session》tabs

点击摄像头按钮

默认密码:secret

可以看到模拟浏览器正在运行的效果

3、编程调用 docker-selenium

bash 复制代码
def login_get_cookie():
    # 配置浏览器选项
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument('--no-sandbox')
    chrome_options.add_argument('--disable-dev-shm-usage')

    # 连接到远程Selenium Chrome节点
    browser = webdriver.Remote("http://127.0.0.1:14444", options=chrome_options)

    try:
        browser.get("https://xxbb.com/Account/Login")
        # 输出网页标题
        print(browser.title)
        account_name = '123'
        passward = '456'
        # 找到用户名和密码输入框,并模拟输入账号密码(请替换为实际的元素定位方式)
        # driver.find_element(By.ID,"validemail2").send_keys(account_name)
        print("Waiting for element to be clickable...")
        element = WebDriverWait(browser, 20).until(
            EC.element_to_be_clickable((By.CSS_SELECTOR, '[id="validemail2"]'))
        )
        element.send_keys(account_name)
        # print(browser.page_source)
        print("Element is clickable.")
        print("---------------获取到元素准备登录")
        browser.find_element(By.XPATH, '/html/body/div[1]/div/div/div/div[2]/div/form/div[2]/input').send_keys(passward)
        browser.find_element(By.ID, "button").click()

        # # 提交登录表单(如果需要点击登录按钮的话)
        # login_button = driver.find_element_by_css_selector('input[type="submit"]')  # 或其他定位方式
        # login_button.click()

        # 等待页面加载完成(如果需要的话,可以使用WebDriverWait配合expected_conditions进行等待)
        # ...
        # print("----------", browser.get_cookies())
        # 获取当前页面的所有Cookie
        cookies = browser.get_cookies()
        # print(cookies)
        # 初始化一个空字符串,用于存储拼接后的cookie字符串
        cookie_string = ""
        for cookie in cookies:
            print(f"Name: {cookie['name']}, Value: {cookie['value']}")
            # 将每个cookie的name和value拼接成形如"name=value"的格式,并添加到cookie_string中
            cookie_string += f"{cookie['name']}={cookie['value']};"
            # 去除最后一个分号
        cookie_string = cookie_string[:-1]
        return cookie_string
    finally:
        browser.quit()
相关推荐
zh路西法19 小时前
【宇树机器人强化学习】(四):Go2基础训练以及参数调节与解析
python·深度学习·ubuntu·机器学习·机器人
码路飞20 小时前
315 曝光 AI 投毒产业链,我写了个 Python 脚本检测 AI 回答有没有「中毒」
python·aigc
程序员柳20 小时前
智能学生管理系统:Spring Boot3+Vue3 前后端分离开发与 Docker 部署
spring boot·后端·docker
尘世壹俗人20 小时前
知识点7---Docker的容器编排工具Compose以及如何用Harbor部署私有化远程镜像仓库
运维·docker·容器
q_354888515320 小时前
计算机毕业设计源码:锦江酒店大数据分析与个性化推荐系统 Django框架 Vue 可视化 Hadoop 爬虫 协同过滤推荐算法 民宿 客栈(建议收藏)✅
python·机器学习·信息可视化·数据分析·django·课程设计·旅游
ノBye~20 小时前
Centos7.6 Docker安装MySQL8
运维·docker·容器
sg_knight20 小时前
设计模式实战:代理模式(Proxy)
python·设计模式·代理模式·proxy
xixihaha132420 小时前
实战:用OpenCV和Python进行人脸识别
jvm·数据库·python
badhope20 小时前
Python 库全景图:核心工具与最佳实践(小白也能看懂版)
后端·python
带娃的IT创业者20 小时前
WeClaw WebSocket 路由实战:BridgeConnectionManager 如何用四层映射在 800 个连接中实现毫秒级消息转发?
网络·python·websocket·网络协议·fastapi·实时通信