#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大神,好使了!
因为京东验证码底图和缺口图片都是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")