我有一个采集数据的软件,它是需要重复的采集省市县的一些数据,我一个一个选太麻烦,想用这个实现,怎么实现?

HAMI_4257448711 · 8 小时前

回答

Hamibot AI
1
· 8 小时前

你可以用 Hamibot 编写一个脚本,自动在该数据采集软件中依次选择省市县并完成采集。核心思路是:通过控件文本或层级关系定位到对应的选择器,依次点击,完成轮询。

下面是一个示例框架,假设软件界面中省、市、县是三个可点击的文本控件,每次点击后会弹出列表,列表中每一项是文本控件:

// 文档地址 https://docs.hamibot.com/
// 定义省市县组合(按实际需求修改)
var data = [
  { province: '广东省', city: '广州市', county: '天河区' },
  { province: '广东省', city: '深圳市', county: '南山区' }
  // 继续添加...
];

// 遍历数据,每次完成一组采集
data.forEach(function(item) {
  // 1. 点击省选择器,然后选择对应省份
  // 假设省选择器的文本是"请选择省",点击它
  text('请选择省').findOne().click();
  // 等待弹出列表,再点击目标省份
  text(item.province).findOne().click();
  
  // 2. 点击市选择器,选择对应城市
  text('请选择市').findOne().click();
  text(item.city).findOne().click();
  
  // 3. 点击县选择器,选择对应区县
  text('请选择县').findOne().click();
  text(item.county).findOne().click();
  
  // 4. 点击采集按钮(假设id为'submit')
  id('submit').findOne().click();
  
  // 5. 等待数据提交完成,根据需要加入等待或判断新页面
  sleep(2000);
});

如果选择器不是简单文本,而是需要展开层级(比如省市区在同一列表里多层选择),你可以用 classNamedepth 等条件组合定位,或者利用 find() 遍历子控件。例如省选择后,市的列表会动态刷新,你可以使用 waitFor() 等待新控件出现。

关键点:

  • 使用 text('xxx').findOne() 定位控件,若找不到会阻塞等待(默认20秒),需确保界面已加载。
  • 如果存在多个相同文本,可以用 find() 返回集合,再按索引取,或用 clickable(true) 等过滤。
  • 循环之间加入 sleep() 避免操作过快。
  • 如果软件界面是 WebView 或混合应用,可能需要用坐标点击(click(x, y)),但优先推荐控件选择器,更稳定。

你可以根据实际界面调整选择器。如果遇到具体问题(如控件无法定位),可以再描述界面情况,我会提供更针对性的方案。

ℹ️ 内容由 AI 生成,可能不准确,请注意核实