update log打印减少;响应速度提升;内部群已读数过滤
This commit is contained in:
@@ -8,6 +8,8 @@ object Constant {
|
|||||||
const val PACKAGE_NAMES = "com.tencent.wework"
|
const val PACKAGE_NAMES = "com.tencent.wework"
|
||||||
val BASE_URL = WebConfig.HOST.replace("wss", "https").replace("ws", "http")
|
val BASE_URL = WebConfig.HOST.replace("wss", "https").replace("ws", "http")
|
||||||
val URL_CHECK_UPDATE = "$BASE_URL/appUpdate/checkUpdate"
|
val URL_CHECK_UPDATE = "$BASE_URL/appUpdate/checkUpdate"
|
||||||
|
const val CHANGE_PAGE_INTERVAL = 1000L
|
||||||
|
const val POP_WINDOW_INTERVAL = 500L
|
||||||
|
|
||||||
var key = "9876543210abcdef".toByteArray()
|
var key = "9876543210abcdef".toByteArray()
|
||||||
var iv = "0123456789abcdef".toByteArray()
|
var iv = "0123456789abcdef".toByteArray()
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package org.yameida.worktool.service
|
package org.yameida.worktool.service
|
||||||
|
|
||||||
import com.blankj.utilcode.util.LogUtils
|
import com.blankj.utilcode.util.LogUtils
|
||||||
|
import org.yameida.worktool.Constant
|
||||||
import org.yameida.worktool.model.WeworkMessageBean
|
import org.yameida.worktool.model.WeworkMessageBean
|
||||||
import org.yameida.worktool.utils.AccessibilityUtil
|
import org.yameida.worktool.utils.AccessibilityUtil
|
||||||
import org.yameida.worktool.utils.Views
|
import org.yameida.worktool.utils.Views
|
||||||
@@ -47,10 +48,10 @@ object WeworkGetImpl {
|
|||||||
if (!goHomeTab("我")) {
|
if (!goHomeTab("我")) {
|
||||||
LogUtils.d("未找到我的信息")
|
LogUtils.d("未找到我的信息")
|
||||||
goHomeTab("消息")
|
goHomeTab("消息")
|
||||||
val firstTv = AccessibilityUtil.findAllByClazz(getRoot(), Views.TextView, root = true)
|
val firstTv = AccessibilityUtil.findAllByClazz(getRoot(), Views.TextView)
|
||||||
.firstOrNull { it.text == null }
|
.firstOrNull { it.text == null }
|
||||||
AccessibilityUtil.performClick(firstTv)
|
AccessibilityUtil.performClick(firstTv)
|
||||||
sleep(1000)
|
sleep(Constant.CHANGE_PAGE_INTERVAL)
|
||||||
val newFirstTv = AccessibilityUtil.findOneByClazz(getRoot(), Views.TextView)
|
val newFirstTv = AccessibilityUtil.findOneByClazz(getRoot(), Views.TextView)
|
||||||
val nickname = newFirstTv?.text?.toString()
|
val nickname = newFirstTv?.text?.toString()
|
||||||
AccessibilityUtil.performClick(firstTv)
|
AccessibilityUtil.performClick(firstTv)
|
||||||
@@ -67,7 +68,7 @@ object WeworkGetImpl {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
AccessibilityUtil.performClick(AccessibilityUtil.findOneByClazz(getRoot(), Views.ImageView))
|
AccessibilityUtil.performClick(AccessibilityUtil.findOneByClazz(getRoot(), Views.ImageView))
|
||||||
sleep(1000)
|
sleep(Constant.CHANGE_PAGE_INTERVAL)
|
||||||
val relativeLayoutList = AccessibilityUtil.findAllByClazz(getRoot(), Views.RelativeLayout, minSize = 50)
|
val relativeLayoutList = AccessibilityUtil.findAllByClazz(getRoot(), Views.RelativeLayout, minSize = 50)
|
||||||
val myInfo = WeworkMessageBean.MyInfo()
|
val myInfo = WeworkMessageBean.MyInfo()
|
||||||
for (relativeLayout in relativeLayoutList.filter { it.childCount >= 2 }) {
|
for (relativeLayout in relativeLayoutList.filter { it.childCount >= 2 }) {
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import android.os.Message
|
|||||||
import android.view.accessibility.AccessibilityNodeInfo
|
import android.view.accessibility.AccessibilityNodeInfo
|
||||||
import androidx.core.text.isDigitsOnly
|
import androidx.core.text.isDigitsOnly
|
||||||
import com.blankj.utilcode.util.LogUtils
|
import com.blankj.utilcode.util.LogUtils
|
||||||
|
import org.yameida.worktool.Constant
|
||||||
import org.yameida.worktool.model.WeworkMessageBean
|
import org.yameida.worktool.model.WeworkMessageBean
|
||||||
import org.yameida.worktool.service.WeworkController.mainLoopRunning
|
import org.yameida.worktool.service.WeworkController.mainLoopRunning
|
||||||
import org.yameida.worktool.utils.*
|
import org.yameida.worktool.utils.*
|
||||||
@@ -40,7 +41,7 @@ object WeworkLoopImpl {
|
|||||||
mainLoopRunning = true
|
mainLoopRunning = true
|
||||||
try {
|
try {
|
||||||
while (mainLoopRunning) {
|
while (mainLoopRunning) {
|
||||||
if (WeworkRoomUtil.getRoomType(getRoot()) != WeworkMessageBean.ROOM_TYPE_UNKNOWN
|
if (WeworkRoomUtil.getRoomType(getRoot(), false) != WeworkMessageBean.ROOM_TYPE_UNKNOWN
|
||||||
&& getChatMessageList()) {
|
&& getChatMessageList()) {
|
||||||
}
|
}
|
||||||
goHomeTab("消息")
|
goHomeTab("消息")
|
||||||
@@ -72,23 +73,23 @@ object WeworkLoopImpl {
|
|||||||
AccessibilityUtil.performClick(item)
|
AccessibilityUtil.performClick(item)
|
||||||
val addButton = AccessibilityUtil.findOneByText(getRoot(), "添加客户")
|
val addButton = AccessibilityUtil.findOneByText(getRoot(), "添加客户")
|
||||||
val backNode = AccessibilityUtil.findBackNode(addButton)
|
val backNode = AccessibilityUtil.findBackNode(addButton)
|
||||||
LogUtils.d(backNode?.className)
|
|
||||||
if (backNode?.className == Views.TextView) {
|
if (backNode?.className == Views.TextView) {
|
||||||
LogUtils.d("有待添加客户")
|
LogUtils.d("有待添加客户")
|
||||||
AccessibilityUtil.performClick(backNode)
|
AccessibilityUtil.performClick(backNode)
|
||||||
sleep(2000)
|
|
||||||
AccessibilityUtil.findTextAndClick(getRoot(), "新的客户")
|
AccessibilityUtil.findTextAndClick(getRoot(), "新的客户")
|
||||||
sleep(500)
|
|
||||||
var retry = 5
|
var retry = 5
|
||||||
while (retry-- > 0) {
|
while (retry-- > 0) {
|
||||||
if (!AccessibilityUtil.findTextAndClick(getRoot(), "查看"))
|
val checkButton = AccessibilityUtil.findOneByText(getRoot(), "查看", timeout = 2000)
|
||||||
|
if (checkButton == null) {
|
||||||
break
|
break
|
||||||
sleep(2000)
|
} else {
|
||||||
|
sleep(Constant.CHANGE_PAGE_INTERVAL)
|
||||||
val nameList = passFriendRequest()
|
val nameList = passFriendRequest()
|
||||||
if (nameList.isEmpty())
|
if (nameList.isEmpty())
|
||||||
break
|
break
|
||||||
//TODO nameList 通过的好友加入演示脚本
|
//TODO nameList 通过的好友加入演示脚本
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return true
|
return true
|
||||||
} else {
|
} else {
|
||||||
LogUtils.d("未发现待添加客户")
|
LogUtils.d("未发现待添加客户")
|
||||||
@@ -115,11 +116,11 @@ object WeworkLoopImpl {
|
|||||||
}
|
}
|
||||||
if (titleList.size > 0) {
|
if (titleList.size > 0) {
|
||||||
val title = titleList.joinToString()
|
val title = titleList.joinToString()
|
||||||
LogUtils.i("聊天: $title")
|
LogUtils.v("聊天: $title")
|
||||||
log("聊天: $title")
|
log("聊天: $title")
|
||||||
val list = AccessibilityUtil.findOneByClazz(getRoot(), Views.ListView)
|
val list = AccessibilityUtil.findOneByClazz(getRoot(), Views.ListView)
|
||||||
if (list != null) {
|
if (list != null) {
|
||||||
LogUtils.d("消息条数: " + list.childCount)
|
LogUtils.v("消息条数: " + list.childCount)
|
||||||
val messageList = arrayListOf<WeworkMessageBean.SubMessageBean>()
|
val messageList = arrayListOf<WeworkMessageBean.SubMessageBean>()
|
||||||
for (i in 0 until list.childCount) {
|
for (i in 0 until list.childCount) {
|
||||||
val item = list.getChild(i)
|
val item = list.getChild(i)
|
||||||
@@ -162,11 +163,8 @@ object WeworkLoopImpl {
|
|||||||
val tvNick = filter[0]
|
val tvNick = filter[0]
|
||||||
LogUtils.d("好友请求: " + tvNick.text)
|
LogUtils.d("好友请求: " + tvNick.text)
|
||||||
AccessibilityUtil.findTextAndClick(getRoot(), "通过验证")
|
AccessibilityUtil.findTextAndClick(getRoot(), "通过验证")
|
||||||
sleep(1000)
|
|
||||||
AccessibilityUtil.findTextAndClick(getRoot(), "完成")
|
AccessibilityUtil.findTextAndClick(getRoot(), "完成")
|
||||||
sleep(5000)
|
|
||||||
if (AccessibilityUtil.findTextAndClick(getRoot(), "确定")) {
|
if (AccessibilityUtil.findTextAndClick(getRoot(), "确定")) {
|
||||||
sleep(500)
|
|
||||||
LogUtils.d("添加好友失败")
|
LogUtils.d("添加好友失败")
|
||||||
} else {
|
} else {
|
||||||
val weworkMessageBean = WeworkMessageBean()
|
val weworkMessageBean = WeworkMessageBean()
|
||||||
@@ -192,6 +190,7 @@ object WeworkLoopImpl {
|
|||||||
* 读取聊天列表
|
* 读取聊天列表
|
||||||
*/
|
*/
|
||||||
private fun getChatroomList(): Boolean {
|
private fun getChatroomList(): Boolean {
|
||||||
|
if (!isAtHome()) return true
|
||||||
if (logIndex % 3 == 0) {
|
if (logIndex % 3 == 0) {
|
||||||
AccessibilityUtil.performScrollUp(getRoot(), 0)
|
AccessibilityUtil.performScrollUp(getRoot(), 0)
|
||||||
AccessibilityUtil.performScrollUp(getRoot(), 0)
|
AccessibilityUtil.performScrollUp(getRoot(), 0)
|
||||||
@@ -199,6 +198,7 @@ object WeworkLoopImpl {
|
|||||||
} else if (logIndex % 120 < 3) {
|
} else if (logIndex % 120 < 3) {
|
||||||
AccessibilityUtil.performScrollDown(getRoot(), 0)
|
AccessibilityUtil.performScrollDown(getRoot(), 0)
|
||||||
}
|
}
|
||||||
|
if (!isAtHome()) return true
|
||||||
if (logIndex++ % 15 == 0) {
|
if (logIndex++ % 15 == 0) {
|
||||||
LogUtils.i("读取首页聊天列表")
|
LogUtils.i("读取首页聊天列表")
|
||||||
log("读取首页聊天列表")
|
log("读取首页聊天列表")
|
||||||
@@ -267,7 +267,7 @@ object WeworkLoopImpl {
|
|||||||
val message: WeworkMessageBean.SubMessageBean
|
val message: WeworkMessageBean.SubMessageBean
|
||||||
val nameList = arrayListOf<String>()
|
val nameList = arrayListOf<String>()
|
||||||
val itemMessageList = arrayListOf<WeworkMessageBean.ItemMessageBean>()
|
val itemMessageList = arrayListOf<WeworkMessageBean.ItemMessageBean>()
|
||||||
LogUtils.d("开始解析一条消息...")
|
LogUtils.v("开始解析一条消息...")
|
||||||
//消息头(在消息主体上方 如时间信息)
|
//消息头(在消息主体上方 如时间信息)
|
||||||
val linearLayoutItem = AccessibilityUtil.findOnceByClazz(node, Views.LinearLayout, 1)
|
val linearLayoutItem = AccessibilityUtil.findOnceByClazz(node, Views.LinearLayout, 1)
|
||||||
if (linearLayoutItem != null) {
|
if (linearLayoutItem != null) {
|
||||||
@@ -279,7 +279,7 @@ object WeworkLoopImpl {
|
|||||||
sb.append(text).append("\t")
|
sb.append(text).append("\t")
|
||||||
itemMessageList.add(itemMessage)
|
itemMessageList.add(itemMessage)
|
||||||
}
|
}
|
||||||
LogUtils.d(sb.toString())
|
LogUtils.v(sb.toString())
|
||||||
}
|
}
|
||||||
//消息主体
|
//消息主体
|
||||||
val relativeLayoutItem = AccessibilityUtil.findOnceByClazz(node, Views.RelativeLayout, 1)
|
val relativeLayoutItem = AccessibilityUtil.findOnceByClazz(node, Views.RelativeLayout, 1)
|
||||||
@@ -297,7 +297,7 @@ object WeworkLoopImpl {
|
|||||||
AccessibilityUtil.findAllOnceByClazz(relativeLayoutContent, Views.TextView)
|
AccessibilityUtil.findAllOnceByClazz(relativeLayoutContent, Views.TextView)
|
||||||
for (item in tvList.filter { it.text != null && !it.text.isNullOrBlank() }) {
|
for (item in tvList.filter { it.text != null && !it.text.isNullOrBlank() }) {
|
||||||
val text = item.text.toString()
|
val text = item.text.toString()
|
||||||
LogUtils.d(text)
|
LogUtils.v(text)
|
||||||
if (text !in stopWords) {
|
if (text !in stopWords) {
|
||||||
val itemMessage = WeworkMessageBean.ItemMessageBean(2, text)
|
val itemMessage = WeworkMessageBean.ItemMessageBean(2, text)
|
||||||
itemMessageList.add(itemMessage)
|
itemMessageList.add(itemMessage)
|
||||||
@@ -307,22 +307,28 @@ object WeworkLoopImpl {
|
|||||||
message = WeworkMessageBean.SubMessageBean(0, textType, itemMessageList, nameList)
|
message = WeworkMessageBean.SubMessageBean(0, textType, itemMessageList, nameList)
|
||||||
} else if (Views.ImageView.equals(relativeLayoutItem.getChild(1).className)) {
|
} else if (Views.ImageView.equals(relativeLayoutItem.getChild(1).className)) {
|
||||||
LogUtils.v("头像在右边 本条消息发送者为自己")
|
LogUtils.v("头像在右边 本条消息发送者为自己")
|
||||||
val tvList = AccessibilityUtil.findAllOnceByClazz(relativeLayoutItem, Views.TextView)
|
val subLayout = relativeLayoutItem.getChild(0)
|
||||||
|
if (subLayout.childCount > 0) {
|
||||||
|
val tvList = AccessibilityUtil.findAllOnceByClazz(
|
||||||
|
subLayout.getChild(subLayout.childCount - 1),
|
||||||
|
Views.TextView
|
||||||
|
)
|
||||||
for (item in tvList.filter { it.text != null && !it.text.isNullOrBlank() }) {
|
for (item in tvList.filter { it.text != null && !it.text.isNullOrBlank() }) {
|
||||||
val text = item.text.toString()
|
val text = item.text.toString()
|
||||||
LogUtils.d(text)
|
LogUtils.v(text)
|
||||||
if (text !in stopWords) {
|
if (text !in stopWords) {
|
||||||
val itemMessage = WeworkMessageBean.ItemMessageBean(2, text)
|
val itemMessage = WeworkMessageBean.ItemMessageBean(2, text)
|
||||||
itemMessageList.add(itemMessage)
|
itemMessageList.add(itemMessage)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
message = WeworkMessageBean.SubMessageBean(1, 0, itemMessageList, nameList)
|
message = WeworkMessageBean.SubMessageBean(1, 0, itemMessageList, nameList)
|
||||||
} else {
|
} else {
|
||||||
// 没有头像的消息(撤销消息、其他可能的系统消息)
|
// 没有头像的消息(撤销消息、其他可能的系统消息)
|
||||||
val tvList = AccessibilityUtil.findAllOnceByClazz(node, Views.TextView)
|
val tvList = AccessibilityUtil.findAllOnceByClazz(node, Views.TextView)
|
||||||
for (item in tvList.filter { it.text != null && !it.text.isNullOrBlank() }) {
|
for (item in tvList.filter { it.text != null && !it.text.isNullOrBlank() }) {
|
||||||
val text = item.text.toString()
|
val text = item.text.toString()
|
||||||
LogUtils.d(text)
|
LogUtils.v(text)
|
||||||
val itemMessage = WeworkMessageBean.ItemMessageBean(1, text)
|
val itemMessage = WeworkMessageBean.ItemMessageBean(1, text)
|
||||||
itemMessageList.add(itemMessage)
|
itemMessageList.add(itemMessage)
|
||||||
}
|
}
|
||||||
@@ -341,7 +347,7 @@ object WeworkLoopImpl {
|
|||||||
itemMessageList.add(itemMessage)
|
itemMessageList.add(itemMessage)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
LogUtils.d(sb.toString())
|
LogUtils.v(sb.toString())
|
||||||
message = WeworkMessageBean.SubMessageBean(2, 0, itemMessageList, nameList)
|
message = WeworkMessageBean.SubMessageBean(2, 0, itemMessageList, nameList)
|
||||||
}
|
}
|
||||||
return message
|
return message
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package org.yameida.worktool.service
|
|||||||
|
|
||||||
import android.view.accessibility.AccessibilityNodeInfo
|
import android.view.accessibility.AccessibilityNodeInfo
|
||||||
import com.blankj.utilcode.util.LogUtils
|
import com.blankj.utilcode.util.LogUtils
|
||||||
|
import org.yameida.worktool.Constant
|
||||||
import org.yameida.worktool.model.WeworkMessageBean
|
import org.yameida.worktool.model.WeworkMessageBean
|
||||||
import org.yameida.worktool.utils.AccessibilityUtil
|
import org.yameida.worktool.utils.AccessibilityUtil
|
||||||
import org.yameida.worktool.utils.Views
|
import org.yameida.worktool.utils.Views
|
||||||
@@ -58,7 +59,7 @@ object WeworkOperationImpl {
|
|||||||
"回复"
|
"回复"
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
LogUtils.d("开始回复")
|
LogUtils.v("开始回复")
|
||||||
sendChatMessage(receivedContent, "[自动回复]")
|
sendChatMessage(receivedContent, "[自动回复]")
|
||||||
LogUtils.d("$title: 回复成功")
|
LogUtils.d("$title: 回复成功")
|
||||||
WeworkLoopImpl.getChatMessageList()
|
WeworkLoopImpl.getChatMessageList()
|
||||||
@@ -203,11 +204,11 @@ object WeworkOperationImpl {
|
|||||||
val node = AccessibilityUtil.scrollAndFindByText(getRoot(), "微盘")
|
val node = AccessibilityUtil.scrollAndFindByText(getRoot(), "微盘")
|
||||||
if (node != null) {
|
if (node != null) {
|
||||||
AccessibilityUtil.performClick(node)
|
AccessibilityUtil.performClick(node)
|
||||||
val buttonList = AccessibilityUtil.findAllByClazz(getRoot(), Views.Button, root = true)
|
val buttonList = AccessibilityUtil.findAllByClazz(getRoot(), Views.Button)
|
||||||
if (buttonList.size >= 4) {
|
if (buttonList.size >= 4) {
|
||||||
AccessibilityUtil.performClick(buttonList[2])
|
AccessibilityUtil.performClick(buttonList[2])
|
||||||
AccessibilityUtil.findTextInput(getRoot(), objectName)
|
AccessibilityUtil.findTextInput(getRoot(), objectName)
|
||||||
val imageViewList = AccessibilityUtil.findAllByClazz(getRoot(), Views.ImageView, root = true)
|
val imageViewList = AccessibilityUtil.findAllByClazz(getRoot(), Views.ImageView)
|
||||||
if (imageViewList.size >= 2) {
|
if (imageViewList.size >= 2) {
|
||||||
AccessibilityUtil.performClick(imageViewList[1])
|
AccessibilityUtil.performClick(imageViewList[1])
|
||||||
val shareFileButton = AccessibilityUtil.findOneByDesc(getRoot(), "以原文件分享")
|
val shareFileButton = AccessibilityUtil.findOneByDesc(getRoot(), "以原文件分享")
|
||||||
@@ -245,11 +246,11 @@ object WeworkOperationImpl {
|
|||||||
val node = AccessibilityUtil.scrollAndFindByText(getRoot(), "微盘")
|
val node = AccessibilityUtil.scrollAndFindByText(getRoot(), "微盘")
|
||||||
if (node != null) {
|
if (node != null) {
|
||||||
AccessibilityUtil.performClick(node)
|
AccessibilityUtil.performClick(node)
|
||||||
val buttonList = AccessibilityUtil.findAllByClazz(getRoot(), Views.Button, root = true)
|
val buttonList = AccessibilityUtil.findAllByClazz(getRoot(), Views.Button)
|
||||||
if (buttonList.size >= 4) {
|
if (buttonList.size >= 4) {
|
||||||
AccessibilityUtil.performClick(buttonList[2])
|
AccessibilityUtil.performClick(buttonList[2])
|
||||||
AccessibilityUtil.findTextInput(getRoot(), objectName)
|
AccessibilityUtil.findTextInput(getRoot(), objectName)
|
||||||
val imageViewList = AccessibilityUtil.findAllByClazz(getRoot(), Views.ImageView, root = true)
|
val imageViewList = AccessibilityUtil.findAllByClazz(getRoot(), Views.ImageView)
|
||||||
if (imageViewList.size >= 2) {
|
if (imageViewList.size >= 2) {
|
||||||
AccessibilityUtil.performClick(imageViewList[1])
|
AccessibilityUtil.performClick(imageViewList[1])
|
||||||
val shareFileButton = AccessibilityUtil.findOneByDesc(getRoot(), "转发")
|
val shareFileButton = AccessibilityUtil.findOneByDesc(getRoot(), "转发")
|
||||||
@@ -283,7 +284,7 @@ object WeworkOperationImpl {
|
|||||||
val node = AccessibilityUtil.scrollAndFindByText(getRoot(), "用过的小程序")
|
val node = AccessibilityUtil.scrollAndFindByText(getRoot(), "用过的小程序")
|
||||||
if (node != null) {
|
if (node != null) {
|
||||||
AccessibilityUtil.performClick(node)
|
AccessibilityUtil.performClick(node)
|
||||||
val textViewList = AccessibilityUtil.findAllByClazz(getRoot(), Views.TextView, root = true)
|
val textViewList = AccessibilityUtil.findAllByClazz(getRoot(), Views.TextView)
|
||||||
if (textViewList.size > 3) {
|
if (textViewList.size > 3) {
|
||||||
AccessibilityUtil.performClick(textViewList[2])
|
AccessibilityUtil.performClick(textViewList[2])
|
||||||
AccessibilityUtil.findTextInput(getRoot(), objectName)
|
AccessibilityUtil.findTextInput(getRoot(), objectName)
|
||||||
@@ -325,11 +326,11 @@ object WeworkOperationImpl {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
AccessibilityUtil.performClick(myFileButton)
|
AccessibilityUtil.performClick(myFileButton)
|
||||||
val buttonList = AccessibilityUtil.findAllByClazz(getRoot(), Views.Button, root = true)
|
val buttonList = AccessibilityUtil.findAllByClazz(getRoot(), Views.Button)
|
||||||
if (buttonList.size >= 4) {
|
if (buttonList.size >= 4) {
|
||||||
AccessibilityUtil.performClick(buttonList[3])
|
AccessibilityUtil.performClick(buttonList[3])
|
||||||
AccessibilityUtil.findTextInput(getRoot(), objectName)
|
AccessibilityUtil.findTextInput(getRoot(), objectName)
|
||||||
val imageViewList = AccessibilityUtil.findAllByClazz(getRoot(), Views.ImageView, root = true)
|
val imageViewList = AccessibilityUtil.findAllByClazz(getRoot(), Views.ImageView)
|
||||||
if (imageViewList.size >= 2) {
|
if (imageViewList.size >= 2) {
|
||||||
AccessibilityUtil.performClick(imageViewList[1])
|
AccessibilityUtil.performClick(imageViewList[1])
|
||||||
val shareFileButton = AccessibilityUtil.findOneByDesc(getRoot(), "转发")
|
val shareFileButton = AccessibilityUtil.findOneByDesc(getRoot(), "转发")
|
||||||
@@ -362,26 +363,21 @@ object WeworkOperationImpl {
|
|||||||
val searchButton: AccessibilityNodeInfo = textViewList[textViewList.size - 2]
|
val searchButton: AccessibilityNodeInfo = textViewList[textViewList.size - 2]
|
||||||
val multiButton: AccessibilityNodeInfo = textViewList[textViewList.size - 1]
|
val multiButton: AccessibilityNodeInfo = textViewList[textViewList.size - 1]
|
||||||
AccessibilityUtil.performClick(multiButton)
|
AccessibilityUtil.performClick(multiButton)
|
||||||
sleep(500)
|
sleep(Constant.POP_WINDOW_INTERVAL)
|
||||||
val listViewList = AccessibilityUtil.findAllByClazz(getRoot(), Views.ListView, root = true)
|
val listViewList = AccessibilityUtil.findAllByClazz(getRoot(), Views.ListView)
|
||||||
if (!listViewList.isNullOrEmpty()) {
|
if (!listViewList.isNullOrEmpty()) {
|
||||||
if (AccessibilityUtil.findTextAndClick(listViewList.last(), "添加客户")) {
|
if (AccessibilityUtil.findTextAndClick(listViewList.last(), "添加客户")) {
|
||||||
AccessibilityUtil.findTextAndClick(getRoot(), "搜索手机号添加")
|
AccessibilityUtil.findTextAndClick(getRoot(), "搜索手机号添加")
|
||||||
AccessibilityUtil.findTextInput(getRoot(), friend.phone.trim())
|
AccessibilityUtil.findTextInput(getRoot(), friend.phone.trim())
|
||||||
if (AccessibilityUtil.findTextAndClick(getRoot(), "网络查找手机")) {
|
if (AccessibilityUtil.findTextAndClick(getRoot(), "网络查找手机")) {
|
||||||
val bothUsedTv = AccessibilityUtil.findOneByText(getRoot(), "对方同时使用")
|
val bothUsedTv = AccessibilityUtil.findOneByText(getRoot(), "对方同时使用", timeout = 2000)
|
||||||
if (bothUsedTv != null) {
|
if (bothUsedTv != null) {
|
||||||
if (AccessibilityUtil.performClick(
|
AccessibilityUtil.performClick(
|
||||||
AccessibilityUtil.findOnceByClazz(
|
AccessibilityUtil.findOnceByClazz(
|
||||||
AccessibilityUtil.findBackNode(bothUsedTv),
|
AccessibilityUtil.findBackNode(bothUsedTv),
|
||||||
Views.ImageView
|
Views.ImageView
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
) {
|
|
||||||
sleep(2000)
|
|
||||||
} else {
|
|
||||||
LogUtils.e("未找到可点击图标")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
LogUtils.e("未找到查找手机选项")
|
LogUtils.e("未找到查找手机选项")
|
||||||
@@ -400,7 +396,7 @@ object WeworkOperationImpl {
|
|||||||
) {
|
) {
|
||||||
AccessibilityUtil.performClick(markTv)
|
AccessibilityUtil.performClick(markTv)
|
||||||
val etList =
|
val etList =
|
||||||
AccessibilityUtil.findAllByClazz(getRoot(), Views.EditText, root = true, minSize = 5)
|
AccessibilityUtil.findAllByClazz(getRoot(), Views.EditText, minSize = 5)
|
||||||
if (etList.size >= 5) {
|
if (etList.size >= 5) {
|
||||||
if (friend.markName != null) {
|
if (friend.markName != null) {
|
||||||
AccessibilityUtil.editTextInput(etList[0], friend.markName)
|
AccessibilityUtil.editTextInput(etList[0], friend.markName)
|
||||||
@@ -413,14 +409,11 @@ object WeworkOperationImpl {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
AccessibilityUtil.findTextAndClick(getRoot(), "保存")
|
AccessibilityUtil.findTextAndClick(getRoot(), "保存")
|
||||||
sleep(2000)
|
|
||||||
}
|
}
|
||||||
//设置标签
|
//设置标签
|
||||||
if (!friend.tagList.isNullOrEmpty()) {
|
if (!friend.tagList.isNullOrEmpty()) {
|
||||||
if (AccessibilityUtil.findTextAndClick(getRoot(), "标签")) {
|
if (AccessibilityUtil.findTextAndClick(getRoot(), "标签")) {
|
||||||
sleep(1000)
|
|
||||||
setFriendTags(friend.tagList)
|
setFriendTags(friend.tagList)
|
||||||
sleep(1000)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//添加联系人
|
//添加联系人
|
||||||
@@ -440,7 +433,6 @@ object WeworkOperationImpl {
|
|||||||
}
|
}
|
||||||
if (AccessibilityUtil.findTextAndClick(getRoot(), "添加为联系人")) {
|
if (AccessibilityUtil.findTextAndClick(getRoot(), "添加为联系人")) {
|
||||||
LogUtils.d("添加好友成功: " + friend.phone)
|
LogUtils.d("添加好友成功: " + friend.phone)
|
||||||
sleep(2000)
|
|
||||||
if (AccessibilityUtil.findTextAndClick(getRoot(), "发送添加邀请")) {
|
if (AccessibilityUtil.findTextAndClick(getRoot(), "发送添加邀请")) {
|
||||||
LogUtils.d("发送添加邀请成功: " + friend.phone)
|
LogUtils.d("发送添加邀请成功: " + friend.phone)
|
||||||
}
|
}
|
||||||
@@ -787,12 +779,9 @@ object WeworkOperationImpl {
|
|||||||
private fun setFriendTags(tagList: List<String>): Boolean {
|
private fun setFriendTags(tagList: List<String>): Boolean {
|
||||||
val tagList = if (tagList.size > 5) tagList.subList(0, 5) else tagList
|
val tagList = if (tagList.size > 5) tagList.subList(0, 5) else tagList
|
||||||
val tvTag = AccessibilityUtil.findAllByText(getRoot(), "个人标签").lastOrNull()
|
val tvTag = AccessibilityUtil.findAllByText(getRoot(), "个人标签").lastOrNull()
|
||||||
if (tvTag != null) {
|
val oldTagList = arrayListOf<String>()
|
||||||
val list = AccessibilityUtil.findBackNode(tvTag)
|
val list = AccessibilityUtil.findBackNode(tvTag)
|
||||||
if (list != null && list.childCount > 0) {
|
if (list != null && list.childCount > 0) {
|
||||||
LogUtils.v("list.childCount: " + list.childCount)
|
|
||||||
val tvAdd = list.getChild(0)
|
|
||||||
val oldTagList = arrayListOf<String>()
|
|
||||||
for (i in 0 until list.childCount) {
|
for (i in 0 until list.childCount) {
|
||||||
val child = list.getChild(i)
|
val child = list.getChild(i)
|
||||||
if (child.className.equals(Views.TextView) && child.text != null) {
|
if (child.className.equals(Views.TextView) && child.text != null) {
|
||||||
@@ -802,11 +791,15 @@ object WeworkOperationImpl {
|
|||||||
//不存在的标签先添加
|
//不存在的标签先添加
|
||||||
for (tag in tagList) {
|
for (tag in tagList) {
|
||||||
if (!oldTagList.contains(tag)) {
|
if (!oldTagList.contains(tag)) {
|
||||||
AccessibilityUtil.performClick(tvAdd)
|
AccessibilityUtil.findOneByText(getRoot(), "个人标签")
|
||||||
sleep(500)
|
sleep(Constant.POP_WINDOW_INTERVAL)
|
||||||
|
val tempList = AccessibilityUtil.findBackNode(
|
||||||
|
AccessibilityUtil.findAllByText(getRoot(), "个人标签").lastOrNull())
|
||||||
|
if (tempList != null && tempList.childCount > 0) {
|
||||||
|
AccessibilityUtil.performClick(tempList.getChild(0))
|
||||||
AccessibilityUtil.findTextInput(getRoot(), tag)
|
AccessibilityUtil.findTextInput(getRoot(), tag)
|
||||||
AccessibilityUtil.findTextAndClick(getRoot(), "确定")
|
AccessibilityUtil.findTextAndClick(getRoot(), "确定")
|
||||||
sleep(1000)
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//确认只选择列表里的标签
|
//确认只选择列表里的标签
|
||||||
@@ -833,7 +826,6 @@ object WeworkOperationImpl {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
LogUtils.e("未找到个人标签")
|
LogUtils.e("未找到个人标签")
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import org.yameida.worktool.utils.AccessibilityUtil.findOneByClazz
|
|||||||
import org.yameida.worktool.utils.AccessibilityUtil.findFrontNode
|
import org.yameida.worktool.utils.AccessibilityUtil.findFrontNode
|
||||||
import org.yameida.worktool.model.WeworkMessageBean
|
import org.yameida.worktool.model.WeworkMessageBean
|
||||||
import com.blankj.utilcode.util.LogUtils
|
import com.blankj.utilcode.util.LogUtils
|
||||||
|
import org.yameida.worktool.Constant
|
||||||
import org.yameida.worktool.service.backPress
|
import org.yameida.worktool.service.backPress
|
||||||
import org.yameida.worktool.service.getRoot
|
import org.yameida.worktool.service.getRoot
|
||||||
import org.yameida.worktool.service.goHome
|
import org.yameida.worktool.service.goHome
|
||||||
@@ -20,7 +21,7 @@ object WeworkRoomUtil {
|
|||||||
* 房间类型 ROOM_TYPE
|
* 房间类型 ROOM_TYPE
|
||||||
* @see WeworkMessageBean.ROOM_TYPE
|
* @see WeworkMessageBean.ROOM_TYPE
|
||||||
*/
|
*/
|
||||||
fun getRoomType(root: AccessibilityNodeInfo): Int {
|
fun getRoomType(root: AccessibilityNodeInfo, print: Boolean = true): Int {
|
||||||
when {
|
when {
|
||||||
isExternalSingleChat(root) -> {
|
isExternalSingleChat(root) -> {
|
||||||
LogUtils.d("ROOM_TYPE: ROOM_TYPE_EXTERNAL_CONTACT")
|
LogUtils.d("ROOM_TYPE: ROOM_TYPE_EXTERNAL_CONTACT")
|
||||||
@@ -40,7 +41,7 @@ object WeworkRoomUtil {
|
|||||||
return WeworkMessageBean.ROOM_TYPE_INTERNAL_CONTACT
|
return WeworkMessageBean.ROOM_TYPE_INTERNAL_CONTACT
|
||||||
}
|
}
|
||||||
else -> {
|
else -> {
|
||||||
LogUtils.d("ROOM_TYPE: ROOM_TYPE_UNKNOWN")
|
if (print) LogUtils.d("ROOM_TYPE: ROOM_TYPE_UNKNOWN")
|
||||||
return WeworkMessageBean.ROOM_TYPE_UNKNOWN
|
return WeworkMessageBean.ROOM_TYPE_UNKNOWN
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -66,7 +67,7 @@ object WeworkRoomUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
LogUtils.d("getRoomTitle: ", titleList)
|
LogUtils.v("getRoomTitle: ", titleList)
|
||||||
return titleList
|
return titleList
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,11 +97,11 @@ object WeworkRoomUtil {
|
|||||||
val multiButton: AccessibilityNodeInfo = textViewList[textViewList.size - 1]
|
val multiButton: AccessibilityNodeInfo = textViewList[textViewList.size - 1]
|
||||||
AccessibilityUtil.performClick(searchButton)
|
AccessibilityUtil.performClick(searchButton)
|
||||||
AccessibilityUtil.findTextInput(getRoot(), title.replace("…", ""))
|
AccessibilityUtil.findTextInput(getRoot(), title.replace("…", ""))
|
||||||
sleep(1000)
|
sleep(Constant.CHANGE_PAGE_INTERVAL)
|
||||||
val selectListView = findOneByClazz(getRoot(), Views.ListView)
|
val selectListView = findOneByClazz(getRoot(), Views.ListView)
|
||||||
val imageView = AccessibilityUtil.findOnceByClazz(selectListView, Views.ImageView)
|
val imageView = AccessibilityUtil.findOnceByClazz(selectListView, Views.ImageView)
|
||||||
AccessibilityUtil.performClick(imageView)
|
AccessibilityUtil.performClick(imageView)
|
||||||
sleep(1000)
|
sleep(Constant.CHANGE_PAGE_INTERVAL)
|
||||||
return true
|
return true
|
||||||
} else {
|
} else {
|
||||||
LogUtils.e("未找到搜索按钮")
|
LogUtils.e("未找到搜索按钮")
|
||||||
@@ -192,7 +193,7 @@ object WeworkRoomUtil {
|
|||||||
val buttonList = findAllOnceByClazz(textViewList.last().parent.parent, Views.TextView)
|
val buttonList = findAllOnceByClazz(textViewList.last().parent.parent, Views.TextView)
|
||||||
return buttonList.size == 2
|
return buttonList.size == 2
|
||||||
} else {
|
} else {
|
||||||
LogUtils.d("未找到群管理按钮")
|
LogUtils.v("未找到群管理按钮")
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
LogUtils.d("未找到消息列表")
|
LogUtils.d("未找到消息列表")
|
||||||
|
|||||||
@@ -309,7 +309,7 @@ object WeworkTextUtil {
|
|||||||
private fun longClickMessageItem(item: AccessibilityNodeInfo, key: String): Boolean {
|
private fun longClickMessageItem(item: AccessibilityNodeInfo, key: String): Boolean {
|
||||||
val backNode = getMessageListNode(item)
|
val backNode = getMessageListNode(item)
|
||||||
AccessibilityUtil.performLongClickWithSon(backNode)
|
AccessibilityUtil.performLongClickWithSon(backNode)
|
||||||
val optionRvList = findAllByClazz(getRoot(), Views.RecyclerView, root = true)
|
val optionRvList = findAllByClazz(getRoot(), Views.RecyclerView)
|
||||||
for (optionRv in optionRvList) {
|
for (optionRv in optionRvList) {
|
||||||
val optionTvList = findAllOnceByClazz(optionRv, Views.TextView)
|
val optionTvList = findAllOnceByClazz(optionRv, Views.TextView)
|
||||||
for (optionTv in optionTvList) {
|
for (optionTv in optionTvList) {
|
||||||
|
|||||||
Reference in New Issue
Block a user