import java.util.concurrent.TimeUnit
// ...rest of imports
public final class EmailUtils {
//...rest of code base
public static String ExtractSignUpLink() {
String link;
int retryAttempts;
ActionHandler.Handle({
link = this.ProcessHTML(this.GetLatestMessageBody(30),
"//a[.//div[@class = 'sign-mail-btn-text']]/@href");
}, { boolean success, ex ->
if (success)
return;
// handle ex
if (((GoogleJsonResponseException)ex).getDetails().getCode() >= 400)
throw ex;
sleep(1000 * 2**retryAttempts++);
}, TimeUnit.MINUTES.toSeconds(15))
return link;
}
//...rest of code base
}
public final class ActionHandler {
public static void Handle(Closure onAction, Closure onDone, long timeOut) {
long startTime = System.currentTimeSeconds();
while (System.currentTimeSeconds() < startTime + timeOut) {
try {
onDone(true, onAction());
return;
} catch (Exception ex) {
onDone(false, ex);
}
}
}
}
1条答案
按热度按时间k0pti3hp1#
假设您成功获得了消息字符串here's how you can retrieve the link from it,并假设您的电子邮件消息检索方法调用返回HTML字符串。
为了保存您的点击次数:
从那里,你必须注销你的HTML消息字符串(或者在你的方法调用周围放置调试断点,并从调试器中提取它),pretty print it,然后,你可以使用你的web测试技能为实际的链接创建一些xpath选择器字符串。
然后,你使用我的代码:
公平地说,电子邮件信息到达收件箱需要一些时间。因此,你可能还需要一些重试逻辑。下面是我真实的项目代码库中的示例: