当前位置: 首页 > news >正文

web端自动化远程调用浏览器实现

# -*- coding: utf-8 -*-
"""
带界面的 Selenoid 演示
可以看到浏览器的实际操作过程!
"""from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
import timeprint("🎬 开始界面演示...")
print("👀 请通过 VNC Viewer 连接 127.0.0.1:5900 观看浏览器操作")
print("   密码: selenoid")
print()# 配置 Chrome (不使用无头模式)
chrome_options = Options()
# chrome_options.add_argument("--headless")  # 注释掉无头模式,可以看到浏览器界面
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage")
chrome_options.add_argument("--disable-gpu")
# 注意:不添加 --headless,这样可以看到浏览器界面print("🔗 连接到 Chrome...")
driver = webdriver.Remote(command_executor="http://localhost:4444",options=chrome_options
)print("✅ 浏览器已启动!")
print("👁️  现在您可以在 VNC Viewer 中看到浏览器窗口")
print()try:# 演示1:访问百度print("📍 演示1: 访问百度")driver.get("https://www.baidu.com")print(f"   页面标题: {driver.title}")print("   等待5秒,观看页面加载...")time.sleep(5)# 演示2:搜索操作print("\n📍 演示2: 执行搜索")try:search_box = driver.find_element(By.ID, "kw")search_box.clear()search_box.send_keys("Selenium 自动化测试")print("   已输入搜索关键词,等待3秒...")time.sleep(3)search_button = driver.find_element(By.ID, "su")search_button.click()print("   已点击搜索按钮,等待页面加载...")time.sleep(5)print(f"   搜索结果页面标题: {driver.title}")except Exception as e:print(f"   搜索操作失败: {e}")# 演示3:访问其他网站print("\n📍 演示3: 访问 Example.com")driver.get("https://www.example.com")print(f"   页面标题: {driver.title}")print("   等待3秒观看页面...")time.sleep(3)# 演示4:页面操作print("\n📍 演示4: 页面滚动和元素查找")try:# 滚动页面driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")time.sleep(2)driver.execute_script("window.scrollTo(0, 0);")time.sleep(2)# 查找元素h1 = driver.find_element(By.TAG_NAME, "h1")print(f"   找到标题元素: {h1.text}")# 高亮显示元素driver.execute_script("arguments[0].style.border='3px solid red'", h1)print("   已高亮显示标题元素(红色边框),等待3秒...")time.sleep(3)except Exception as e:print(f"   页面操作失败: {e}")print("\n🎬 演示即将结束...")print("⏳ 最后等待10秒,然后关闭浏览器...")time.sleep(10)except Exception as e:print(f"❌ 演示失败: {e}")finally:driver.quit()print("🔒 浏览器已关闭")print()print("🎉 演示完成!")print("💡 您已经看到了如何通过 VNC 观看 Selenium 自动化操作")print("🔧 在您的代码中,只需要去掉 --headless 参数即可启用界面模式")

 

 

#!/bin/bash# 直接使用 Chrome 容器的简单启动方案
# 适用于 Apple Silicon Macset -eecho "🚀 启动简单版 Chrome 浏览器容器"
echo "================================"# 配置
CONTAINER_NAME="chrome-selenoid"
PORT=80# 清理旧容器
echo "🧹 清理旧容器..."
docker stop $CONTAINER_NAME 2>/dev/null || true
docker rm $CONTAINER_NAME 2>/dev/null || true# 直接运行支持 VNC 的 Chrome 容器
echo "🚀 启动 Chrome 容器 (支持界面查看)..."
docker run -d \--name $CONTAINER_NAME \--platform linux/amd64 \--restart unless-stopped \-p 4444:4444 \-p 5900:5900 \-p $PORT:80 \-e SCREEN_WIDTH=1920 \-e SCREEN_HEIGHT=1080 \-e SCREEN_DEPTH=24 \-e DISPLAY=:99 \-e ENABLE_VNC=true \-e VNC_NO_PASSWORD=1 \--shm-size=2g \selenoid/vnc:chrome_118.0echo "⏳ 等待 Chrome 启动..."
sleep 10# 检查服务
echo "🔍 检查服务状态..."
if curl -s http://localhost:4444/status > /dev/null 2>&1; thenecho "✅ Chrome 服务启动成功!"echo ""echo "🎉 访问地址:"echo "  WebDriver 端点:   http://localhost:4444"echo "  状态检查:         http://localhost:4444/status"echo "  VNC 浏览器界面:   vnc://localhost:5900 (密码: selenoid)"echo ""echo "🖥️  查看浏览器界面:"echo "  1. 下载 VNC Viewer: https://www.realvnc.com/en/connect/download/viewer/"echo "  2. 连接到: localhost:5900 或 127.0.0.1:5900"echo "  3. 密码: selenoid"echo ""echo "💡 测试命令:"echo "  python3 简单示例.py"echo "  python3 有界面演示.py"
elseecho "⚠️  Chrome 可能还在启动中..."echo "📋 查看日志:"docker logs $CONTAINER_NAME
fiecho ""
echo "🔧 管理命令:"
echo "  查看日志: docker logs $CONTAINER_NAME"
echo "  重启容器: docker restart $CONTAINER_NAME"
echo "  停止容器: docker stop $CONTAINER_NAME"
# -*- coding: utf-8 -*-
"""
带界面的 Selenoid 演示
可以看到浏览器的实际操作过程!
"""from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
import timeprint("🎬 开始界面演示...")
print("👀 请通过 VNC Viewer 连接 127.0.0.1:5900 观看浏览器操作")
print("   密码: selenoid")
print()# 配置 Chrome (不使用无头模式)
chrome_options = Options()
# chrome_options.add_argument("--headless")  # 注释掉无头模式,可以看到浏览器界面
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage")
chrome_options.add_argument("--disable-gpu")
# 注意:不添加 --headless,这样可以看到浏览器界面print("🔗 连接到 Chrome...")
driver = webdriver.Remote(command_executor="http://localhost:4444",options=chrome_options
)print("✅ 浏览器已启动!")
print("👁️  现在您可以在 VNC Viewer 中看到浏览器窗口")
print()try:# 演示1:访问百度print("📍 演示1: 访问百度")driver.get("https://www.baidu.com")print(f"   页面标题: {driver.title}")print("   等待5秒,观看页面加载...")time.sleep(5)# 演示2:搜索操作print("\n📍 演示2: 执行搜索")try:search_box = driver.find_element(By.ID, "kw")search_box.clear()search_box.send_keys("Selenium 自动化测试")print("   已输入搜索关键词,等待3秒...")time.sleep(3)search_button = driver.find_element(By.ID, "su")search_button.click()print("   已点击搜索按钮,等待页面加载...")time.sleep(5)print(f"   搜索结果页面标题: {driver.title}")except Exception as e:print(f"   搜索操作失败: {e}")# 演示3:访问其他网站print("\n📍 演示3: 访问 Example.com")driver.get("https://www.example.com")print(f"   页面标题: {driver.title}")print("   等待3秒观看页面...")time.sleep(3)# 演示4:页面操作print("\n📍 演示4: 页面滚动和元素查找")try:# 滚动页面driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")time.sleep(2)driver.execute_script("window.scrollTo(0, 0);")time.sleep(2)# 查找元素h1 = driver.find_element(By.TAG_NAME, "h1")print(f"   找到标题元素: {h1.text}")# 高亮显示元素driver.execute_script("arguments[0].style.border='3px solid red'", h1)print("   已高亮显示标题元素(红色边框),等待3秒...")time.sleep(3)except Exception as e:print(f"   页面操作失败: {e}")print("\n🎬 演示即将结束...")print("⏳ 最后等待10秒,然后关闭浏览器...")time.sleep(10)except Exception as e:print(f"❌ 演示失败: {e}")finally:driver.quit()print("🔒 浏览器已关闭")print()print("🎉 演示完成!")print("💡 您已经看到了如何通过 VNC 观看 Selenium 自动化操作")print("🔧 在您的代码中,只需要去掉 --headless 参数即可启用界面模式")

 

http://www.jsqmd.com/news/431234/

相关文章:

  • QOwnNotes(事务笔记管理)
  • 高效运用长尾关键词提升SEO优化效果的全面指南
  • 中国电缆知名品牌推荐:2026年控制电缆国内一线品牌推荐名单 - 品牌2026
  • *RK809 Codec 音频驱动调试笔记操作总结
  • 给你一张清单 9个一键生成论文工具:本科生毕业论文+开题报告写作全测评
  • 【运维】运维转行网安|从0到1落地指南,2026最稳转型路径
  • 基于微信小程序的健康管理微信小程序设计与实现
  • 2026年产后康复机构推荐:西安金月子科学坐月子,专业护母婴! - 深度智识库
  • 彻底颠覆!Google 108页Agent Quality白皮书指南(附中英双版PDF),翻遍全网,这绝对是最全教材
  • Java Web应用开发入门
  • 中间件知识快速复习:Redis、MySQL、消息队列核心要点
  • 再论勾股定理-楼梯悖论
  • 2026最有效的防脱生发精华液怎么选?实测成分与效果解析 - 品牌排行榜
  • 互联网大厂Java面试实战:核心技术、微服务架构与AI应用全解析
  • 2026年知名的铝板/5182铝板品牌厂家哪家靠谱 - 品牌宣传支持者
  • 2026年知名的同心异径管,碳钢异径管,对焊异径管厂家行业热门推荐 - 品牌鉴赏师
  • 月子餐哪家好?2026年最新推荐:西安金月子用科学守护母婴未来! - 深度智识库
  • 2026年3月汽车窗膜厂家推荐,精准检测与稳定性能深度解析 - 品牌鉴赏师
  • 2026年质量好的挖机改装钻裂一体机/挖改钻裂一体机实力工厂推荐 - 品牌宣传支持者
  • 轨道交通电力电缆生产厂家推荐(2026年):涵中低压、低压、中压、变频电缆等厂家 - 品牌2026
  • 2026年3月防爆汽车窗膜厂家推荐,精准检测与稳定性能深度解析 - 品牌鉴赏师
  • LangChain Chain链
  • 2026年高端月子会所权威观察报告:科学坐月子时代,谁在定义行业标准? - 深度智识库
  • 2026年热门的埋弧高频焊管,大口径高频焊管厂家专业评测推荐榜 - 品牌鉴赏师
  • 2026 物联网开发实力榜单:落地稳、扩展强、成本优 - 速递信息
  • 2026 年西安高端月子中心推荐指南:金月子科学坐月子优选! - 深度智识库
  • 2026年正规的DN200直缝钢管,厚壁直缝钢管,高频焊直缝钢管厂家采购优选指南 - 品牌鉴赏师
  • 香港盛世設計费用贵不贵,它在香港的口碑究竟好不好? - mypinpai
  • 2026平价护发精油排行榜:高性价比修护单品推荐 - 品牌排行榜
  • 2026年诚信的枕式包装机,饮料包装机,水果包装机厂家选型推荐榜单 - 品牌鉴赏师