【问题标题】:Generate random emails生成随机电子邮件
【发布时间】:2018-02-01 03:34:18
【问题描述】:

你能帮帮我吗? 如何使用 Selenium 和 Java 生成随机电子邮件? ?

我在 stackoverflow 中查看这里,但我还没有找到答案。 我试过这个,但没有帮助

【问题讨论】:

  • 电子邮件地址还是真实邮箱?
  • 如果你只是想生成电子邮件,则不需要 selenium。到目前为止,您可以添加您的代码吗?
  • 我添加了我的代码,我只想在每次运行时生成一封随机电子邮件
  • 您的代码中只需要随机字符串生成器。
  • @karlaA 我更新了下面的答案

标签: java selenium


【解决方案1】:

你可以创建一个生成唯一id的方法

 public static String getUniqueId() {
            return String.format("%s_%s", UUID.randomUUID().toString().substring(0, 5), System.currentTimeMillis() / 1000);
        }

然后将此方法与您需要的主机名一起使用

 public static String generateMailinatorEmail() {
        return String.format("%s@%s", getUniqueId(), "yourHostName.com");
    }

另一种解决方案:

javafaker.Fakerhttps://github.com/DiUS/java-faker添加依赖

import com.github.javafaker.Faker;

public static String randomEmail() {
      Faker faker = new Faker();
      return faker.internet().emailAddress();
    }

【讨论】:

    【解决方案2】:

    这是在 Kotlin 中实现的一种方法:

    object EmailGenerator {
        private const val ALLOWED_CHARS = "abcdefghijklmnopqrstuvwxyz" + "1234567890" + "_-."
    
        @Suppress("SpellCheckingInspection")
        fun generateRandomEmail(@IntRange(from = 1) localEmailLength: Int, host: String = "gmail.com"): String {
            val firstLetter = RandomStringUtils.random(1, 'a'.toInt(), 'z'.toInt(), false, false)
            val temp = if (localEmailLength == 1) "" else RandomStringUtils.random(localEmailLength - 1, ALLOWED_CHARS)
            return "$firstLetter$temp@$host"
        }
    }
    

    Gradle 文件:

    // https://mvnrepository.com/artifact/org.apache.commons/commons-lang3
    implementation 'org.apache.commons:commons-lang3:3.7'
    

    【讨论】:

      【解决方案3】:

      这是我的随机电子邮件生成器解决方案。

       //randomestring() will return string of 8 chars
      
        import org.apache.commons.lang3.RandomStringUtils;
      
        public String randomestring()
        {
          String generatedstring=RandomStringUtils.randomAlphabetic(8);
          return(generatedstring);
         }
      
      
        //Usage
         String email=randomestring()+"@gmail.com";
      
       //For Random Number generation 
      ////randomeNum() will return string of 4 digits
      
         public static String randomeNum() {
              String generatedString2 = RandomStringUtils.randomNumeric(4);
              return (generatedString2);
           }
      

      【讨论】:

        【解决方案4】:

        如果您不介意添加库,Generex 非常适合测试数据。 https://github.com/mifmif/Generex

        如果您使用的是 maven,请将其添加到您的 pom.xml,否则请查看上面的链接以获取其他选项。

            <dependency>
                <groupId>com.github.mifmif</groupId>
                <artifactId>generex</artifactId>
                <version>1.0.2</version>
            </dependency>
        

        然后:

        // we have to escape @ for some reason, otherwise we get StackOverflowError
        String regex = "\\w{10}\\@gmail\\.com"
        driver.findElement(By.id("emailAddressInput"))
                   .sendText(new Generex(regex).random());
        

        它使用正则表达式来指定随机生成的格式。上面的正则表达式是生成 10 个随机单词字符,附加 @gmail.com。如果您想要更长的用户名,请更改数字 10。

        如果你想为津巴布韦(我住的地方)生成一个随机手机号码:

        String regex = "2637(1|3|7|8)\\d{7}";
        

        这个图书馆为我节省了很多时间。

        【讨论】:

        • 以执行您的电子邮件正则表达式为例(顺便说一句,第一行末尾缺少分号),它会导致 StackOverflowError。我可以通过在 @ 之前添加 \\ (双反斜杠)来解决它
        【解决方案5】:

        您也可以使用MockNeat。该库的一个简单示例是:

        String email = mock.emails().val();
        // Possible Output: icedvida@yahoo.com
        

        或者,如果您想从特定域生成电子邮件:

        String corpEmail = mock.emails().domain("startup.io").val();
        // Possible Output: tiptoplunge@startup.io
        

        【讨论】:

          【解决方案6】:

          试试这个方法

          /**
           * @author mbn
           * @Date 05/10/2018
           * @Purpose This method will generate a random integer
           * @param length --> the length of the random emails we want to generate
           * @return method will return a random email String
           */
          public static String generateRandomEmail(int length) {
              log.info("Generating a Random email String");
              String allowedChars = "abcdefghijklmnopqrstuvwxyz" + "1234567890" + "_-.";
              String email = "";
              String temp = RandomStringUtils.random(length, allowedChars);
              email = temp.substring(0, temp.length() - 9) + "@testdata.com";
              return email;
          }
          

          【讨论】:

            【解决方案7】:

            您需要随机字符串生成器。这个答案是我从here 偷来的。

            protected String getSaltString() {
                    String SALTCHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
                    StringBuilder salt = new StringBuilder();
                    Random rnd = new Random();
                    while (salt.length() < 10) { // length of the random string.
                        int index = (int) (rnd.nextFloat() * SALTCHARS.length());
                        salt.append(SALTCHARS.charAt(index));
                    }
                    String saltStr = salt.toString();
                    return saltStr;
            
                }
            

            在您的代码中将其称为getSaltString()+"@gmail.com"

            【讨论】:

            • 好的,谢谢。我会尝试将它与 selenium 集成
            • 好的,我试试看。
            • @karlaA 只需点击我的答案右侧的右标志。
            • 完成。 :) 谢谢你帮助我
            • 一封电子邮件不应该以数字开头,不是吗?
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-10-18
            • 1970-01-01
            • 2021-10-25
            • 1970-01-01
            • 2023-03-11
            • 2021-08-05
            相关资源
            最近更新 更多