我正在尝试制作一个程序来自动回复我在 gmail android 应用程序中的电子邮件。我已经完成了最初的初始步骤,但这是下一步:
当程序检测到没有未读电子邮件时,滚动直到找到更多电子邮件。
对于这一步,我使用 uiscrollable 函数:
driver.findElementByAndroidUIAutomator("new UiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView(new UiSelector().textContains(\""+A+"\").instance(0))");
Thread.sleep(2500);`
但程序此时不会工作,而是滚动浏览所有未读电子邮件
有没有办法让这个 uiscrollable 函数找到 content-desc 而不是找到文本?
谢谢
最佳答案
主要逻辑是:
- 设置与 API 连接的所有内容(添加库等)
- 例如,发送请求(查询)并修改该链接
https://www.googleapis.com/gmail/v1/users/HerePutUserId/messages
,并使用参数仅获取未读消息:说以下链接
https://developers.google.com/gmail/api/v1/reference/users/messages/list
- 然后根据需要将其添加到回收商列表中
您可以根据需要修改以下示例
public class MyClass {
// ...
/**
* List all Messages of the user's mailbox matching the query.
*
* @param service Authorized Gmail API instance.
* @param userId User's email address. The special value "me"
* can be used to indicate the authenticated user.
* @param query String used to filter the Messages listed.
* @throws IOException
*/
public static List<Message> listMessagesMatchingQuery(Gmail service, String userId,
String query) throws IOException {
ListMessagesResponse response = service.users().messages().list(userId).setQ(query).execute();
List<Message> messages = new ArrayList<Message>();
while (response.getMessages() != null) {
messages.addAll(response.getMessages());
if (response.getNextPageToken() != null) {
String pageToken = response.getNextPageToken();
response = service.users().messages().list(userId).setQ(query)
.setPageToken(pageToken).execute();
} else {
break;
}
}
for (Message message : messages) {
System.out.println(message.toPrettyString());
}
return messages;
}
/**
* List all Messages of the user's mailbox with labelIds applied.
*
* @param service Authorized Gmail API instance.
* @param userId User's email address. The special value "me"
* can be used to indicate the authenticated user.
* @param labelIds Only return Messages with these labelIds applied.
* @throws IOException
*/
public static List<Message> listMessagesWithLabels(Gmail service, String userId,
List<String> labelIds) throws IOException {
ListMessagesResponse response = service.users().messages().list(userId)
.setLabelIds(labelIds).execute();
List<Message> messages = new ArrayList<Message>();
while (response.getMessages() != null) {
messages.addAll(response.getMessages());
if (response.getNextPageToken() != null) {
String pageToken = response.getNextPageToken();
response = service.users().messages().list(userId).setLabelIds(labelIds)
.setPageToken(pageToken).execute();
} else {
break;
}
}
for (Message message : messages) {
System.out.println(message.toPrettyString());
}
return messages;
}
// ...
}
如果您还有其他问题,请告诉我
关于java - 如何使 uiscrollable 找到 content-desc 而不是文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57356446/