python使用selenium能否实现网页上的键鼠操作(需后台窗口运行)
本帖最后由 szsherwin 于 2021-12-2 11:17 编辑问题如下:
现在在使用python 使用 selenium 的 前台窗口上进行网页的操作是没问题的,但是每次只能执行一个脚本程序,现在同时运行多个python程序脚本任务来执行selenium 任务。所以想请教,不知道能否实现selenium浏览器在后台窗口绑定后,在后台运行python的程序执行页面上的键鼠操作
请问:是否可以实现后台窗口操作(目的是),如果可以请帮忙指点一下
初学选手水平有限,不知道问题描述清楚了没有,请各位高手不吝赐教!谢谢!
再明确一下:需要运行到网页动作的时候,能不能做到后台窗口操作(需要有窗口的模式),类似于按键精灵大漠插件那样绑定后台窗口那样运行,selenium窗口不在最前面窗口也能运行。 phantomjs无窗口
chrome设置参数
都能实现无界面操作浏览器 可能是你每次启动selenium ,都是调用的同一个chrome 浏览器配置,那么就无法多个chrome 呀。多个程序 = 多个浏览器配置呢
解决办法很多,先推荐个最简单有效的,你用火狐浏览器。它自己会做多用户区分。
chrome 多用户 麻烦些,selenium 启动chrome 的时候 可以指定 chrome用户目录 , --user-data-dir=不同目录 ,这个参数自己搜一下就懂了,让这个目录每次都是不同的,就可以启动多个浏览器。
楚子沦i 发表于 2021-12-2 10:36
phantomjs无窗口
chrome设置参数
都能实现无界面操作浏览器
谢谢回复,因为是需要实际页面上做操作(某些网站要这么操作才有效),不是需要phantomjs无窗口模式来做抓取,所以还是要能看到操作。请帮忙再看看 xiaokaic 发表于 2021-12-2 10:55
可能是你每次启动selenium ,都是调用的同一个chrome 浏览器配置,那么就无法多个chrome 呀。多个程序 = 多 ...
感谢您提供的思路!
因为要运用selenium做一些参数配置,所以还是需要用selenium。
您的多个运行selenium的思路非常好。
我需要运行到网页动作的时候,能不能做到后台窗口操作(需要有窗口的模式),类似于按键精灵大漠插件那样绑定后台窗口那样运行,这样既能调用多个浏览器又可以同时互不干扰执行各自的脚本。 szsherwin 发表于 2021-12-2 11:15
感谢您提供的思路!
因为要运用selenium做一些参数配置,所以还是需要用selenium。
您的多个运行seleni ...
selenium 和 浏览器 是一对一的关系,启动了selenium 拉起来浏览器,所有的操作都是 selenium 控制的,浏览器窗口是最小化还是干嘛 都可以呀。 用参数 多用户分区 xiaokaic 发表于 2021-12-2 12:34
selenium 和 浏览器 是一对一的关系,启动了selenium 拉起来浏览器,所有的操作都是 selenium 控制的,浏 ...
我测试过,如果selenium浏览器运行中,必须在最前面窗口才可以操作哦,窗口处于不可见状态就无法操作。 Mr.[先知] 发表于 2021-12-2 13:08
用参数 多用户分区
感谢回复,我想请教的重点是 selenium浏览器后台运行,暂时重点不是多用户多浏览器问题。请帮忙再指导一下! 本帖最后由 珍珠奶茶丶板牙 于 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