selenium 如何取得 canvas element

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

Links booklink

Contact Us: admin [ a t ] ucptt.com