首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python自动测试问题/混淆

python自动测试问题/混淆
EN

Stack Overflow用户
提问于 2016-04-13 14:28:09
回答 2查看 711关注 0票数 1

所以我试着制作一个机器人脚本,当某个十六进制颜色出现在某个像素上时,它会执行一些代码来移动鼠标,点击等等,我让它每1秒将一个屏幕截图放到同一个png文件中,并更新png文件的图片。我有六角形颜色的像素线打印到控制台,以便我可以看到它是否更新。它从不更新,只是保持不变。我尝试过用多种方式编写这个脚本,但遗憾的是,我只有一个版本要向您展示,但希望您能够理解我想要完成的任务。我在python2.7兆位。谢谢大家抽出时间!

代码语言:javascript
复制
import autopy
from time import sleep

color_grabber =    hex(autopy.bitmap.Bitmap.open("screen1.png").get_color(292,115))


def color_checker():
    global color_grabber
    color_grabber = color_grabber
    return

def mouse_move_click():
    autopy.mouse.smooth_move(433,320)
    autopy.mouse.click()

def screen_grab():
    autopy.bitmap.capture_screen().save("screen1.png")  

def the_ifs(mouse_move_click):
    if color_checker == "0xffcb05":
        mouse_move_click()

while 1==1:
    sleep(1)
    screen_grab()
    color_checker()
    the_ifs(mouse_move_click)
    print color_grabber
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-13 14:39:53

我相信您的问题是如何使用color_grabber。说color_grabber = color_grabber什么也做不了。代码中所发生的事情是,当您运行它时,在导入之后,将color_grabber的值定义为图像中的颜色。然后执行while循环,并在该循环中调用color_checker。该函数从全局命名空间中引入变量color_grabber,然后将该变量设置为等于自身。首先,您没有重新执行用于定义color_grabber的命令。您只是将颜色值存储回自身,所以很明显,它不会改变。

在如何调用mouse_move_click函数方面也存在问题。您不想传递函数名,因为这并不是真正必要的。但是,您还执行了检查color_checker == "0xffcb05",它将您的函数(函数本身,而不是返回的值)与十六进制代码进行比较。这对你没有任何好处。你想比较一下颜色。解决方案是将颜色传递到the_ifs中,并使用该颜色与十六进制代码进行比较。不过,我应该注意,您不需要将the_ifs变成它自己的函数。只需将该if语句放入while循环即可。不过,我还是把它留给了你。

你想要的是这样的东西。

代码语言:javascript
复制
import autopy
from time import sleep

def color_checker():
    color_grabber = hex(autopy.bitmap.Bitmap.open("screen1.png").get_color(292,115))
    return color_grabber

def mouse_move_click():
    autopy.mouse.smooth_move(433,320)
    autopy.mouse.click()

def screen_grab():
    autopy.bitmap.capture_screen().save("screen1.png")  

def the_ifs(color):
    if color == "0xffcb05":
        mouse_move_click()

while 1==1:
    sleep(1)
    screen_grab()
    color = color_checker()
    the_ifs(color)
    print color

请注意,我自己还没有运行这段代码,所以我不能保证它能工作,但我相信它应该运行。

票数 0
EN

Stack Overflow用户

发布于 2016-07-15 07:45:20

代码语言:javascript
复制
from autopy.mouse import LEFT_BUTTON
autopy.mouse.click(LEFT_BUTTON)
autopy.mouse.toggle(True, LEFT_BUTTON)
autopy.mouse.toggle(False, LEFT_BUTTON)

我在其他人的代码中看到了这样做的必要性,但我不明白为什么我要在Windows7上测试click.In之后使用向上和向下,点击是有效的,但不是很正确,感觉更像向下到我的操作

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36601540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档