python结合AutoIt工具后真是太赞了!能很大程度上实现自动化操作。
这次只是一个很简单的演示,但是所用的方式能产生很多可能,~ ~ !!!
完善了webdriver的功能!
使用场景:针对网页内嵌套的flash窗口,selenium中的webdriver无法操作造成断点时,使用AutoIt工具来解决。
结果展示:
AutoIt的中文说明文档:https://www.jb51.net/shouce/autoit/
webdriver的使用可以看:https://www.cnblogs.com/yufeihlf/p/5764807.html
(ps:博主整理的很完整。)
出现的问题:
1:ImageGrab.grab()截图不完整的原因:
仅调整图片尺寸无法解决问题,会有黑边
仅在系统分辨率大于100%时出现
解决方法:调整系统分辨率为100%
参考资料:https://blog.csdn.net/wybooooooooo/article/details/80903650
2:AutoIt 工具的安装
官网地址:
https://www.autoitscript.com/site/autoit/downloads/
安装时杀毒软件会有提示,忽略即可。
思路:
一、用webdriver实现web自动化。
二、webdriver无法进行的操作造成的断点,用AutoIt来解决。
将Autol的操作打包成XXX.exe文件,在需要时通过Python中的os.startfile方法调用
location.exe 的作用是点击 flash窗口中的全屏按钮。
效果:
next_page.exe的作用是移动页面
效果:
三、使用PIL中的ImageGrab进行截图、保存。
四、使用循环即可对所有的页面进行截图保存。
完整代码:
from selenium import webdriver
import os
import time
from PIL import ImageGrab
driver=webdriver.Chrome()
url='http://abook.hep.com.cn/jsp/resource/showResourceDocuments.' \
'jsp?resourceUrl=NTAwMDAxMzY2NUAzO2h0dHA6Ly9hYm9vay5oZXAuY29' \
'tLmNuOjgwL0lDb3Vyc2VGaWxlcy81MDAwMDAwMDgxL3N3ZnJlc291cnNlcy' \
'8yMDE0LzgvMjAvMTQvMjEvMTQwODUxNTcwMjU1MS5zd2Y='
driver.get(url)
#等待网页加载完成后,按任意键继续。
key=input('任意键继续( q 退出): ')
if (key=='q'):
exit()
handle=driver.current_window_handle
driver.maximize_window() #最大化窗口,可以简化鼠标定位
driver.implicitly_wait(2)
#exit()
#自定义的鼠标操作
app_path1='E:\AutoIt script\网页中flash窗口\location.exe' #点击flash窗口工具栏上的全屏按钮。
app_path2='E:\AutoIt script\网页中flash窗口\\next_page.exe' #鼠标拖曳,一次向上翻动一个屏幕的距离
os.startfile(app_path1)
time.sleep(3)
n=0
while(n!=16):
filename = 'image\\10_' + str(n + 1) + '.png'
#driver.get_screenshot_as_file(filename)
image=ImageGrab.grab()
image.save(filename)
time.sleep(2)
os.startfile(app_path2)
n=n+1
#input('任意键继续( q 退出): ')
driver.close()