szsherwin 发表于 2021-12-2 10:29

python使用selenium能否实现网页上的键鼠操作(需后台窗口运行)

本帖最后由 szsherwin 于 2021-12-2 11:17 编辑

问题如下:
现在在使用python 使用 selenium 的 前台窗口上进行网页的操作是没问题的,但是每次只能执行一个脚本程序,现在同时运行多个python程序脚本任务来执行selenium 任务。所以想请教,不知道能否实现selenium浏览器在后台窗口绑定后,在后台运行python的程序执行页面上的键鼠操作
请问:是否可以实现后台窗口操作(目的是),如果可以请帮忙指点一下

初学选手水平有限,不知道问题描述清楚了没有,请各位高手不吝赐教!谢谢!

再明确一下:需要运行到网页动作的时候,能不能做到后台窗口操作(需要有窗口的模式),类似于按键精灵大漠插件那样绑定后台窗口那样运行,selenium窗口不在最前面窗口也能运行。

楚子沦i 发表于 2021-12-2 10:36

phantomjs无窗口
chrome设置参数
都能实现无界面操作浏览器

xiaokaic 发表于 2021-12-2 10:55

可能是你每次启动selenium ,都是调用的同一个chrome 浏览器配置,那么就无法多个chrome 呀。多个程序 = 多个浏览器配置呢

解决办法很多,先推荐个最简单有效的,你用火狐浏览器。它自己会做多用户区分。

chrome 多用户 麻烦些,selenium 启动chrome 的时候 可以指定 chrome用户目录 , --user-data-dir=不同目录 ,这个参数自己搜一下就懂了,让这个目录每次都是不同的,就可以启动多个浏览器。

szsherwin 发表于 2021-12-2 11:10

楚子沦i 发表于 2021-12-2 10:36
phantomjs无窗口
chrome设置参数
都能实现无界面操作浏览器

谢谢回复,因为是需要实际页面上做操作(某些网站要这么操作才有效),不是需要phantomjs无窗口模式来做抓取,所以还是要能看到操作。请帮忙再看看

szsherwin 发表于 2021-12-2 11:15

xiaokaic 发表于 2021-12-2 10:55
可能是你每次启动selenium ,都是调用的同一个chrome 浏览器配置,那么就无法多个chrome 呀。多个程序 = 多 ...

感谢您提供的思路!
因为要运用selenium做一些参数配置,所以还是需要用selenium。
您的多个运行selenium的思路非常好。
我需要运行到网页动作的时候,能不能做到后台窗口操作(需要有窗口的模式),类似于按键精灵大漠插件那样绑定后台窗口那样运行,这样既能调用多个浏览器又可以同时互不干扰执行各自的脚本。

xiaokaic 发表于 2021-12-2 12:34

szsherwin 发表于 2021-12-2 11:15
感谢您提供的思路!
因为要运用selenium做一些参数配置,所以还是需要用selenium。
您的多个运行seleni ...

selenium 和 浏览器 是一对一的关系,启动了selenium 拉起来浏览器,所有的操作都是 selenium 控制的,浏览器窗口是最小化还是干嘛 都可以呀。

Mr.[先知] 发表于 2021-12-2 13:08

用参数 多用户分区

szsherwin 发表于 2021-12-2 13:49

xiaokaic 发表于 2021-12-2 12:34
selenium 和 浏览器 是一对一的关系,启动了selenium 拉起来浏览器,所有的操作都是 selenium 控制的,浏 ...

我测试过,如果selenium浏览器运行中,必须在最前面窗口才可以操作哦,窗口处于不可见状态就无法操作。

szsherwin 发表于 2021-12-2 13:51

Mr.[先知] 发表于 2021-12-2 13:08
用参数 多用户分区

感谢回复,我想请教的重点是 selenium浏览器后台运行,暂时重点不是多用户多浏览器问题。请帮忙再指导一下!

珍珠奶茶丶板牙 发表于 2021-12-2 14:21

本帖最后由 珍珠奶茶丶板牙 于 2021-12-2 14:23 编辑

class WebDriver:
    def __init__(self):
      self._options = webdriver.ChromeOptions()
      self._options.add_argument('--disable-infobars')# 禁止策略化
      self._options.add_argument('--no-sandbox')# 解决DevToolsActivePort文件不存在的报错
      self._options.add_argument('window-size=1920x3000')# 指定浏览器分辨率
      self._options.add_argument('--disable-gpu')# 谷歌文档提到需要加上这个属性来规避bug
      self._options.add_argument('--incognito')# 隐身模式(无痕模式)
      self._options.add_argument('--start-maximized')# 最大化运行(全屏窗口),不设置,取元素会报错
      self._options.add_argument('--hide-scrollbars')# 隐藏滚动条, 应对一些特殊页面
      self._options.add_argument('--ignore-certificate-errors')# 无视ssl证书
      self._options.add_argument('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36')
      # self._options.add_argument('--headless')# 浏览器不提供可视化页面
      # self._options.add_argument('--disable-javascript')# 禁用javascript
      # self._options.add_argument('blink-settings=imagesEnabled=false')# 不加载图片, 提升速度
      self._prefs = {}
      # 设置这两个参数就可以避免密码提示框的弹出
      self._prefs['credentials_enable_service'] = False
      self._prefs['profile.password_manager_enabled'] = False
      # self._prefs['profile.managed_default_content_settings.images'] = 2# 不显示图片提高代码速度
      self._options.add_experimental_option('prefs', self._prefs)
      self._driver = webdriver.Chrome(service=Service(r"./chromedriver"), options=self._options)

    def get_driver(self):
      return self._driver拿着driver去做其他操作吧
页: [1] 2
查看完整版本: python使用selenium能否实现网页上的键鼠操作(需后台窗口运行)