如何在Java中生成随机基本多语言平面(BMP)字符串?

时间:2017-10-26 09:39:33

标签: java string selenium random apache-commons

我使用RandomStringGenerator 1.2-SNAPSHOT中的commons-text为测试生成随机用户名和密码。在Selenium中使用这些生成的字符串和Chrome驱动程序可能会导致

org.openqa.selenium.WebDriverException: 
unknown error: ChromeDriver only supports characters in the BMP
  (Session info: chrome=62.0.3202.62)
  (Driver info: chromedriver=2.33.506092 (733a02544d189eeb751fe0d7ddca79a0ee28cce4),platform=Linux 4.13.0-16-generic x86_64) (WARNING: The server did not provide any stacktrace information)

有没有办法用现有函数生成BMP字符串,或者我必须以明显的方式研究所有BMP代码点以从中随机选择并冒险重新发明轮子。

How to handle "org.openqa.selenium.WebDriverException: ChromeDriver only supports characters in the BMP" exception?不重复,因为我也对其他目的的解决方案感兴趣。

1 个答案:

答案 0 :(得分:0)

RandomStringGenerator允许您创建由指定范围和过滤功能过滤的生成器。下面是Kotlin中的一个函数,用于生成与Selenium的chrome驱动程序兼容的随机BMP unicode字符串。

如果您不关心随机字符串是否包含不可打印的字符,则可以删除filteredBy

private val randomBMPStringGenerator: RandomStringGenerator = RandomStringGenerator.Builder().withinRange(0x0000, 0xFFFF).filteredBy(CharacterPredicate {
    c ->
    val block: UnicodeBlock = UnicodeBlock.of(c)
    !Character.isISOControl(c) && block !== UnicodeBlock.SPECIALS
}).build()

randomBMPStringGenerator.generate(wordLength)