我使用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?不重复,因为我也对其他目的的解决方案感兴趣。
答案 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)