python使用大漠找图点击后不再寻找下一个图问题

#python使用大漠找图问题,找到网页上的图后,点击以后,就没有了反应

import win32com.client
import time
import dm


dm = win32com.client.Dispatch('dm.dmsoft')  # 调用大漠插件
dm.setDict(0, 'c:\dm_soft.txt')
dm.SetPath("C:\dmtw")
print(dm.ver())  # 输出版本号




a = 0
while a == 0:
    dm_ret = dm.FindStr(0, 0, 1920, 1080, "草稿箱", "3ecd83-a2e4c2", '0.7', 'X', 'Y')
    x = dm_ret[1]
    y = dm_ret[2]
    print(x, y)
    if x < 0 and y < 0:
        print("未找到草稿箱")
    else:
        a = a + 1
        dm.MoveTo(x + 20, y + 10)
        dm.LeftClick()

time.sleep(2000)
#问题在这出现,点击后不再找图,如果把下面的代码挪到上面,可以找到,我感觉应该是窗口指向不对,但却不知道如何处置
a=0
while a == 0:
    dm_ret = dm.FindPic(0, 0, 1920, 1080,"新的创作.bmp", 000000,0.9,0, 'X', 'Y')
    #dm_ret = dm.FindStr(1712,283,1773,308, "新的创作", "ffffff-77e7e5", '0.4', 'X', 'Y')
    x = dm_ret[1]
    y = dm_ret[2]
    print(x, y)
    if x < 0 and y < 0:
        print("新的创作未找到")
    else:
        a = a + 1
        dm.MoveTo(x + 20, y + 10)
        time.sleep(500)


基于new bing部分指引作答:
根据你的描述,你在使用大漠插件进行图像识别和鼠标点击操作时遇到了问题。在第一个循环中,你成功找到了"草稿箱"图像,并进行了点击操作,但在第二个循环中,无法再次找到图像并进行点击。

问题可能出在第二个循环中的代码逻辑上。根据你提供的代码,第一个循环执行完后,你使用了time.sleep(2000)来暂停程序执行,然后重置了变量a的值为0,接着进入了第二个循环。这可能导致第二个循环立即结束,因为a的值已经不等于0了。

为了解决这个问题,你可以尝试在第一个循环结束后不重置a的值,直接进入第二个循环。另外,你可以使用time.sleep来等待一段时间,确保第一个点击操作完成后再执行第二个循环,以便能够在正确的窗口中进行图像查找和点击操作。

以下是修改后的代码示例:

import win32com.client
import time

dm = win32com.client.Dispatch('dm.dmsoft')  # 调用大漠插件
dm.setDict(0, 'c:\dm_soft.txt')
dm.SetPath("C:\dmtw")
print(dm.ver())  # 输出版本号

a = 0
while a == 0:
    dm_ret = dm.FindStr(0, 0, 1920, 1080, "草稿箱", "3ecd83-a2e4c2", '0.7', 'X', 'Y')
    x = dm_ret[1]
    y = dm_ret[2]
    print(x, y)
    if x < 0 and y < 0:
        print("未找到草稿箱")
    else:
        a = a + 1
        dm.MoveTo(x + 20, y + 10)
        dm.LeftClick()

time.sleep(2)  # 等待2秒,确保第一个点击操作完成

a = 0
while a == 0:
    dm_ret = dm.FindPic(0, 0, 1920, 1080,"新的创作.bmp", 000000,0.9,0, 'X', 'Y')
    x = dm_ret[1]
    y = dm_ret[2]
    print(x, y)
    if x < 0 and y < 0:
        print("新的创作未找到")
    else:
        a = a + 1
        dm.MoveTo(x + 20, y + 10)
        time.sleep(0.5)

我对第一个time.sleep的参数进行了修改,将等待时间改为2秒,以确保第一个点击操作完成。你可以根据实际情况适当调整等待时间。另外,在第二个循环中,我将time.sleep(500)改为了time.sleep(0.5),以秒为单位进行等待,同样你也可以根据需要进行调整。

希望这能解决你的问题!

不行,点击后,网页自动跑到前台,python退到后面,还是不进行找图操作
我看网上说,这是因为点击后,大漠还在原网页上寻找,我用selenium时也遇到这个问题,问题应该出现在python上,点击后我加入
b = 0
print(b)
while b == 0:
python并未运行print,是不是因为鼠标点击后,python自动停止了呢??感谢2301_778387X10大神,好使了!

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7673777
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:python模拟按下键盘上的一个键及多个键
  • 你还可以看下python参考手册中的 python-互联网数据处理
  • 除此之外, 这篇博客: python实现滑动京东滑块验证码中的 验证码图片的下载 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 在这里插入图片描述
    在这里插入图片描述

    因为京东验证码底图和缺口图片都是base64的,所以在这我就用了urllib.request.urlretrieve直接去处理保存到本地了

        def get_image(self):
            self.driver.get(self.url)
            self.driver.maximize_window()
            self.driver.find_element_by_xpath('//*[@id="content"]/div[2]/div[1]/div/div[3]/a').click()
            self.driver.find_element_by_xpath('//*[@id="loginname"]').send_keys(self.username)
            self.driver.find_element_by_xpath('//*[@id="nloginpwd"]').send_keys(self.password)
            self.driver.find_element_by_xpath('//*[@id="loginsubmit"]').click()
            self.target = self.driver.find_element_by_xpath('//*[@id="JDJRV-wrap-loginsubmit"]/div/div/div/div[1]/div[2]/div[1]/img')
            self.src = self.target.get_attribute('src')
            self.template = self.driver.find_element_by_xpath('//*[@id="JDJRV-wrap-loginsubmit"]/div/div/div/div[1]/div[2]/div[2]/img').get_attribute('src')
            request.urlretrieve(self.src, "target.png")
            request.urlretrieve(self.template, "temlate.png")
    
  • 您还可以看一下 尹国艳老师的python编程入门指南课程中的 代码优化及知识点的归纳小节, 巩固相关知识点