作者m87dd05 (八八里阿巴)
看板Python
标题[问题] selenium 如何取得 canvas element
时间Fri Mar 15 15:11:24 2019
最近在尝试爬虫以及用selenium对网页做一些自动化的练习
发现只要是HTML5 的网页游戏几乎都无法直接用开发者工具(chrome F12)的element去选
到我要的物件
例如这个游戏:
http://www.relfind.com/game/magician.html
进去之後的score得分是动态显示的
还有开始按钮感觉也是个物件
但用element去选会是选到一整个画布
查资料後我的理解(推测)是 canvas会把所有元件(例如按钮、分数)绑在一起视为一张图
片,
所以无法直接使用开发者工具的element去选取(去选的话也只是选到这张大画布)
目前查到感觉可行的解法是用selenium action去模拟滑鼠的行为
把滑鼠移到按钮的座标上去做点击
但这样如果我想取到游戏的得分就还是做不到
想请问有没有什麽办法可以取到canvas画布下的按钮element呢?
或是前辈们有没有什麽关键字可以提供我google
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.249.60.124
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1552633887.A.15D.html
※ 编辑: m87dd05 (60.249.60.124), 03/15/2019 15:12:13
1F:推 rexyeah: 直接fire JS event就可以了 不用真的去点按钮 03/15 15:56
2F:→ rexyeah: 我看他的game.js很浅显易懂,你可以试试看 03/15 15:58
3F:→ m87dd05: 请问fire 是指自己去爬程式码吗?如果是的话遇到特意丑化 03/15 17:03
4F:→ m87dd05: 隐藏code的情境下是不是就也行不通了? 03/15 17:03
5F:→ m87dd05: 会有这样的疑问是想说假使今天想爬一个网站,用find all 03/15 17:05
6F:→ m87dd05: 或get element之类的去爬全部程式码找出我要的东西,通常 03/15 17:05
7F:→ m87dd05: 我会先用开发者工具选出我要的element但若遇到这类型的 03/15 17:06
8F:→ m87dd05: 网页就行不通了 03/15 17:06
9F:推 rexyeah: 那是画布,button 不是挂在DOM tree上,是画出来的一张图 03/15 17:29
10F:→ rexyeah: ,并不是对elements 触发事件 你看他的js是认座标,另外 03/15 17:29
11F:→ rexyeah: 其实爬虫真的case by case. 去研究作者的写法爬他的code 03/15 17:29
12F:→ rexyeah: ,然後成功抓到你要的资讯,我觉得相当有趣啊。 03/15 17:29
13F:→ m87dd05: 好的感谢r大,我再来细细研究看看 03/15 17:58