pywinauto 在发布数据

pywinauto 在发布数据的时候 ,怎么记录发布了那一条,第二次发布的时候检查数据发布到哪里了,然后接着发??

在使用pywinauto进行数据发布时,您可以通过记录已发布的数据来实现检查数据发布的位置,并继续发布下一条数据。以下是一种可能的解决方案:

  1. 在发布每条数据之前,创建一个记录器(如列表)来记录已发布的数据的位置。

  2. 发布数据时,将数据发布到目标位置,并将该位置添加到记录器中。

  3. 在下一次发布数据之前,检查记录器中的最后一个位置。

  4. 接着从最后一个位置继续发布数据。

以下是一个简单的示例代码:

from pywinauto import Application

# 创建记录器(列表)来记录已发布的数据位置
published_data_locations = []

# 初始化pywinauto应用程序
app = Application().start('your_application.exe')

# 循环发布数据
for data in data_to_publish:
    # 发布数据到目标位置
    publish_data(data)
    
    # 记录发布的数据位置
    published_data_locations.append(get_published_data_location())
    
# 下一次发布数据之前,检查最后一个位置
last_published_location = published_data_locations[-1]

# 从最后一个位置继续发布数据
for data in data_to_publish:
    # 检查是否到达已发布数据的最后位置
    if get_current_location() == last_published_location:
        break
    
    # 从当前位置继续发布数据
    publish_data(data)
    
    # 更新发布的数据位置
    published_data_locations.append(get_published_data_location())

请注意,以上代码仅为示例,实际实现可能需要根据您使用的应用程序和具体场景进行调整。

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7716827
  • 这篇博客你也可以参考下:python pywinauto 自动控制微信, 关键字回复、收款、定时任务, 代替人工成为微信客服
  • 除此之外, 这篇博客: pywinauto基础中的 3、选择控件 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • from pywinauto.application import Application
    
    # 启动navicat
    app = Application('uia').start(r'D:\tools\Navicat Premium 15\navicat.exe')
    
    # 通过窗口标题选择窗口
    dlg = app['Navicat Premium']
    # dlg.print_control_identifiers()
    
    # 选择控件  ----  选择当前窗口的各级菜单
    # 方式一
    # menu = dlg.Menu
    # print(menu.print_control_identifiers())
    
    # 方式二
    menu = dlg['Menu']
    # print(menu.print_control_identifiers())
    
    # ------报错------------
    # file = dlg['Menu']['文件']
    # print(file.print_control_identifiers())
    
    # 方式三
    # menu下面的中括号显示的是['MenuItem', '文件MenuItem', '文件', 'MenuItem0', 'MenuItem1']
    # 文件是第一个子菜单,根据菜单名查找就好,不用管中括号里面有几个
    file =  menu.child_window(title="文件", control_type="MenuItem")
    file.print_control_identifiers()
    

存储测试执行进度

操作记录是需要你自行编写Python实现,pywinauto只是模拟鼠标键盘操作,不具备保留操作记录的特性

可以使用pywinauto 的自动化采集来实现
基于 pywinauto 的自动化采集任务
https://blog.csdn.net/qq_40734247/article/details/127351274

pywinauto本身不带记录的,需要你自己写程序,将每次使用pywinauto发布数据的时候,发布了什么数据以及将数据发布到了哪个地方。可以使用文件存储或者使用数据库存储都可以,甚至临时使用一个列表或者字典存储都可以的。

为每条数据添加一个唯一标识,上传完毕后进行记录

  1. 使用一个变量或文件来记录已发布的数据的位置。例如,你可以创建一个名为 last_published_index.txt 的文本文件,并将其初始化为 0(如果你是从第一条开始发布)。
  2. 在每次发布数据后,将已发布的索引写入到记录文件中。例如,如果你已成功地发布了第 5 条数据,你将把数字 5 写入到 last_published_index.txt 文件中。
  3. 下次发布数据时,你可以读取记录文件中存储的索引值,然后从该索引值处继续发布数据。例如,如果上次发布到第 5 条数据,那么下次发布时,你将从第 6 条数据开始发布。
  4. 在程序中使用条件语句来检查记录文件以确定从哪里继续发布数据。你可以使用 Python 的文件操作函数(如 open()read()write())来读取和写入记录文件。

这只是一种基本的方法示例,具体的实现方式取决于你的需求和代码结构。你可能需要根据自己的情况进行调整和优化。

引用chatgpt内容作答:
在使用Pywinauto进行数据发布时,你可以通过以下方法记录已发布的数据和检查下一次发布的位置:

记录已发布的数据:在每次成功发布数据后,你可以将已发布的数据记录到一个列表或文件中。你可以创建一个空列表,并在每次成功发布后将新数据添加到列表中,或者将数据写入一个文本文件中。例如:

# 创建一个空列表用于记录已发布的数据
published_data = []

# 在发布数据后,将数据添加到列表中
published_data.append(data_to_publish)

# 或者将数据写入文本文件
with open('published_data.txt', 'a') as file:
    file.write(data_to_publish + '\n')

检查数据发布位置:在下一次发布数据之前,你可以检查已发布数据的位置,以确定从哪里接着发布。如果你将数据记录在列表中,你可以使用列表索引来获取最后一条已发布数据的位置。如果你将数据记录在文本文件中,你可以读取文件并获取最后一行的数据。例如:

# 从列表中获取最后一条已发布数据的位置
last_published_data = published_data[-1]

# 从文本文件中获取最后一行的数据
with open('published_data.txt', 'r') as file:
    lines = file.readlines()
    last_published_data = lines[-1].strip()

在获取到上次发布的位置后,你可以从该位置继续发布下一条数据。

请注意,这只是一种基本的记录和检查方法示例,你可以根据实际需求进行适当的修改和扩展。

来自GPT的回答:

在使用 pywinauto 进行数据发布时,你可以使用一些技术来记录已发布的数据并在下次发布时进行检查。以下是一种可能的方法:

使用某种数据结构(例如列表或字典)来记录已发布的数据。每当你发布一条数据时,将其添加到数据结构中。你可以根据需要选择适合的数据结构和存储方式。例如,使用列表可以按照发布的顺序记录数据,而使用字典可以根据某个唯一标识符(例如数据的ID)记录数据。

在下次发布数据之前,检查已发布的数据记录。你可以遍历数据结构,并根据其中的信息确定从哪里开始继续发布。例如,你可以比对已发布的数据和要发布的数据,找到最后一条已发布数据的位置,然后从下一条开始继续发布。

根据检查结果,接着发表数据。你可以使用相应的方法(如点击按钮、输入文本等)来将数据发布到正确的位置。

以下是一个简单的示例代码,演示如何使用列表记录已发布的数据和检查下一条要发布的数据:

python
Copy code
import pywinauto

# 假设已有的数据列表
published_data = []

# 模拟发布数据
def publish_data(data):
    # 在这里执行发布数据的操作
    # ...

    # 将已发布的数据添加到列表中
    published_data.append(data)

# 获取下一条要发布的数据
def get_next_data():
    # 在这里根据需要获取下一条数据的逻辑
    # 这里使用简单的示例数据
    return "New Data"

# 检查下一条要发布的数据位置
def check_next_position():
    # 假设数据以某种方式标识,例如唯一ID
    last_published_id = published_data[-1]["id"]

    # 在这里根据已发布的数据记录和下一条数据的标识,确定下一条数据的位置
    # ...

    # 这里简单返回最后一条已发布数据的位置+1
    return len(published_data) + 1

# 主循环
while True:
    # 获取下一条要发布的数据
    next_data = get_next_data()

    # 检查下一条数据的位置
    next_position = check_next_position()

    # 输出要发布的数据和位置
    print(f"Publishing Data: {next_data} at Position: {next_position}")

    # 发布数据
    publish_data(next_data)

    # 进行一些等待或其他操作,以便准备下一次发布
    # ...
请注意,这只是一个简单的示例,你需要根据实际情况进行适当修改和调整。具体的实现方式取决于你的应用程序和数据发布的环境。