Chrome Webdriver 如何将窗口设为可见,或者设为 active 状态

2021-02-01 14:25:14 +08:00
 nznd

原始需求:

实现过程:

遇到困难:

试图解决:

页面地址只限内网访问,还需要什么信息尽管提,我会尽快回复

有没有熟练的老哥指点一下哪里可以优化

2291 次点击
所在节点    Python
11 条回复
TimePPT
2021-02-01 14:30:08 +08:00
需求是,因为工单系统邮件推送通知异常,所以写了个 python 脚本监控了本地浏览器打开的工单后台,有新 ticket 就直接本地通知?
luzihang
2021-02-01 14:32:21 +08:00
加一个
driver.fresh()
time.sleep(5)
nznd
2021-02-01 14:34:40 +08:00
@TimePPT #1 是的,工单系统那边说已经在做了,但是进度缓慢(上线 3 个月了还没修复) 貌似是要分配用户组,但是一直没迁移过来,领导也不知道怎么办,给的 work round 是每天看一看... 客户已经切过去了...
(是从一个大公司里买的然后到内网部署,可能部门没划分好(? 反正很无语...
nznd
2021-02-01 14:35:36 +08:00
@luzihang #2 尝试过,并不会将窗口前置,也获取不到数据,切换到窗口界面才开始加载数据
TimePPT
2021-02-01 14:52:12 +08:00
@nznd selenium 用得不多,直接 pypeeter 操纵呢?
liubiantao
2021-02-01 14:54:42 +08:00
你需要的可能就是一个 chrome 插件
[Distill Web Monitor - Chrome 网上应用店]( https://chrome.google.com/webstore/detail/distill-web-monitor/inlikjemeeknofckkjolnjbpehgadgge )
[Web Scraper - Free Web Scraping - Chrome 网上应用店]( https://chrome.google.com/webstore/detail/web-scraper-free-web-scra/jnhgnonknehpejjnehehllkliplmbmhn )
ku360517703
2021-02-01 15:00:24 +08:00
headless 不会导致获取不到元素的。headless 可以指定窗口大小,元素基本都能找到的
luzihang
2021-02-01 15:05:26 +08:00
三个尝试建议
driver 就是你当前的任务 Webdriver
1 、使用容器版本 Chrome,比 headless 感觉功能完整

2 、使用切换句柄
windows = driver.window_handles # 获取打开的多个窗口句柄
driver.switch_to.window(windows[-1]) # 切换到当前最新打开的窗口

3 、试试用 pyautogui ?先获取 webdriver 的顶点坐标,用 pyautogui 去模拟键鼠点击那里,就可以置顶。
x = driver.get_window_rect().get('x')
y = driver.get_window_rect().get('y')
pyautogui.moveTo(x + 2, y + 2)
pyautogui.click()
nznd
2021-02-01 16:12:39 +08:00
@TimePPT #5 可以学习一下,这周看看
@liubiantao #6 这个插件不能做集成,我想后续加上发送邮件功能,给 team 里每个人都发送一封邮件,刚刚试了下第一个还是存在不能加载元素的情况,第二个就没有尝试了
@ku360517703 #7 真的没有元素,窗口大小指定了 800x600 只要有前台窗口就能获取,没有前台窗口就获取不到,100%复现
@luzihang #8 容器的有考虑,如果没有更好的方案就尝试一下,第二个建议看着很成功,准备实践一下! 十分感谢!!
tisswb
2021-02-04 11:07:00 +08:00
playwright 了解一下
nznd
2021-02-04 14:36:06 +08:00
@tisswb #10 这个不行的,必须用公司提供的 chrome 版本,不然无法加入域控,不能使用证书登录

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/750291

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX