我使用java编写Appium测试脚本&现在我想比较两封电子邮件,但在比较之前我必须通过拆分字符串从文本中获取电子邮件ID。 例如:我的申请表中有这样的文字“您的帐户电子邮件与pankaj@gmail.com相关联”所以我想要拆分&仅从此文本&中捕获此电子邮件ID将其与文本框中显示的其他电子邮件ID进行比较。 我怎样才能做到这一点 ?? 目前我这样做:
WebElement email_id= driver.findElement(By.xpath("//UIAApplication[1]/UIAWindow[1]/UIATextField[1]"));
String edit_email=email_id.getText();
System.out.println(edit_email);
但是获得全文。我怎么能分开它。
答案 0 :(得分:2)
您应该使用java.util.regex.Pattern
和java.util.regex.Matcher
尝试正则表达式。我准备了一个代码片段,可以从给定的文本块中找到电子邮件ID。
String text = "your account email associated with pankaj@gmail.com and he has emailed someone@gmail.com.";
Pattern pattern = Pattern.compile("[\\w]+[\\d\\w]*(@)[\\w]+[\\w\\d]*(\\.)[\\w]+");
Matcher matcher = pattern.matcher(text);
while(matcher.find()){
System.out.println(matcher.group());
}
这应该有所帮助。
答案 1 :(得分:0)
这对我来说很有用:
String s = "your account email associated with pankaj@gmail.com";
s = s.replaceAll("^.+\\s", "");
System.out.println(s);
答案 2 :(得分:0)
如果您确定要分割的文本是标准格式(或具有不同电子邮件ID的某些静态内容),则可以使用正则表达式来解析和检索电子邮件地址,如Nitheesh Shah和dotvav中所述。他们的答案。
否则,您必须按照以下主题中提到的几个RFC来完美地检索和验证电子邮件地址(请参阅下面主题顶部显示的最佳答案)。
答案 3 :(得分:0)
正如OP提到的那样,它将仅以电子邮件ID结尾,另一种解决方案可以是:
WebElement email_id= driver.findElement(By.xpath("//UIAApplication[1]/UIAWindow[1]/UIATextField[1]"));
String s[] = email_id.getText().split(" ");
System.out.println(s[s.length-1]);
获取电子邮件ID后,您可以将其与文本框中的其他电子邮件进行比较。
答案 4 :(得分:0)
目前我正在使用这个&它完美地为我工作。实现解决方案是在主字符串中找到特定的电子邮件子字符串。
String word = edit_email;
String com_txt= email_text; //Edit page Static string
Boolean same_txt =com_txt.contains(word);
Boolean result=same_txt;
if(result==true)
{
System.out.println(result);
System.out.println("Edit screen & enter email screen contains the same email");
}
这是执行比较的正确方法吗?