想截取一下验证码的图片,但是截图后和验证码的位置不对应,不知道是不是写法有问题,还是有其余的因素在影响,selenium 用的 Chrome 浏览器 附上操作代码 browser.save_screenshot('bdbutton.png') element = browser.find_element_by_xpath('//*[@id="login-yzm_img"]') # 找到验证码图片 print(element.location) # 打印元素坐标 print(element.size) # 打印元素大小 left = element.location['x'] top = element.location['y'] right = element.location['x'] + element.size['width'] bottom = element.location['y'] + element.size['height']
im = Image.open('bdbutton.png') im = im.crop((left, top, right, bottom)) im.show() im.save('bdbutton.png')
1
ClericPy 2020-04-16 20:00:06 +08:00 1
留个网址? 我试试我直接原生 cdp 截图准不准
如果盲猜的话, 怀疑和截图参数 scale 有关, 但是不确定 selenium 走的是 driver 内置的截图还是也同样走了 cdp |
2
littlepython OP @ClericPy 就芒果 tv 短信登录的那儿的验证码截图
|
3
ClericPy 2020-04-16 21:37:05 +08:00
@littlepython #2 测了下 cdp 抓到的是 ok 的
![JAHeDH.png]( https://s1.ax1x.com/2020/04/16/JAHeDH.png) https://paste.ubuntu.com/p/ZS5CZWmYsj/ |
4
unixeno 2020-04-16 21:56:52 +08:00 via Android 1
你系统开缩放了?
|
5
dudu2017 2020-04-16 22:04:25 +08:00
指定一个窗口大小试试。
|
6
littlepython OP @ClericPy 老哥 你这段代码我在 windows 运行直接报错,我是有什么没设置吗
|
7
littlepython OP @unixeno 系统的推荐是 200%, 把坐标改成 2 就好了,就是不知道怎么能通用
|
8
littlepython OP @dudu2017 和系统的缩放有关 不知道怎么设置一个通用的
|
9
ClericPy 2020-04-17 10:51:04 +08:00 1
@littlepython #6 代码就是随手发的, 因为我没用 selenium, 走的是默认的 Chrome cdp, 可以忽略
我前面说的 scale 参数就是页面缩放的问题, 你要么把 scale 改为 1, 要么就通过 selenium 或者 js 拿到当前缩放 scale 值, 在截图时候传入正确的就可以了 |
10
littlepython OP @ClericPy 好的 我试试
|
11
fzhyzamt 2020-04-17 11:18:41 +08:00
Mac 下试了一下是正常的,可能确实是缩放的原因
|
12
JohnTao 2020-04-21 20:47:22 +08:00 via iPhone
用 xpath 定位
|