Python Seleniu send_keys~如何发送高级Unicode字符

Python Seleniu send_keys~如何发送高级Unicode字符,python,selenium,special-characters,Python,Selenium,Special Characters,为了编写一个测试用例来测试一个字符串输入字段是否真的在所有可能的输入中存活下来,我编译了一个“Omega死亡字符串”,其中包含来自每个当前Unicode块的一个字符。这是: ␡ÆĦǣʨ˧͚ΔѨ֍ࢥޛچضغ߷ࠇउगऴ৳ਸ਼ષନஹౙಯ൷ෂท໖༺ဪჭᆅቘᎆᎹᐇᚙᛤᜇᜰᝇᝧ៘ᢆᣢᢆᢆᡆᤗᥘᦜ᧻ᨋᩗ᪶ᬑᮼᯥᰒᱫᲇ᳄᳷ᵹᶋ᷼ỸὮ※ₘ₹⃟™ↈ↹∰⌦␥⑆⓭╃▙◍♅❦⟗⟹⡕⥇⧉⩷⭖ⰧⱷThis will fix the problem in a Linux environment that is running

为了编写一个测试用例来测试一个字符串输入字段是否真的在所有可能的输入中存活下来,我编译了一个“Omega死亡字符串”,其中包含来自每个当前Unicode块的一个字符。这是:

␡ÆĦǣʨ˧͚ΔѨ֍ࢥޛچضغ߷ࠇउगऴ৳ਸ਼ષନஹౙಯ൷ෂท໖༺ဪჭᆅቘᎆᎹᐇᚙᛤᜇᜰᝇᝧ៘ᢆᣢᢆᢆᡆᤗᥘᦜ᧻ᨋᩗ᪶ᬑᮼᯥᰒᱫᲇ᳄᳷ᵹᶋ᷼ỸὮ※ₘ₹⃟™ↈ↹∰⌦␥⑆⓭╃▙◍♅❦⟗⟹⡕⥇⧉⩷⭖ⰧⱷThis will fix the problem in a Linux environment that is running Chrome as the default user:

def paste(str):
 from subprocess import Popen, PIPE
 p = Popen(['xsel', '-bi'], stdin=PIPE)
 p.communicate(input=str)

 paste(description)
 element.send_keys(Keys.CONTROL,"v")

␡ÆĦǣʨ˧͚ΔѨ֍ࢥޛچضغ߷ࠇउगऴ৳ਸ਼ષନஹౙಯ൷ෂท໖༺ဪჭᆅቘᎆᎹᐇᚙᛤᜇᜰᝇᝧ៘ᢆᣢᢆᢆᡆᤗᥘᦜ᧻ᨋᩗ᪶ᬑᮼᯥᰒᱫᲇ᳄᳷ᵹᶋ᷼ỸὮ※ₘ₹⃟™ↈ↹∰⌦␥⑆⓭╃▙◍♅❦⟗⟹⡕⥇⧉⩷⭖Ⱗⱷ 这将解决以默认用户身份运行Chrome的Linux环境中的问题:

opts.add_argument("user-data-dir=/home/user/.config/google-chrome/selenium")
opts.add_argument('headless')
opts.add_argument('no-sandbox')
browser = webdriver.Chrome(chrome_options=opts)
如果没有程序xsel,可以使用类似于
sudo-yum-install-xsel
的东西安装它

如果您以非默认用户的身份运行Chrome,试图记住Cookie等,则此操作不起作用。以下是您如何成为非默认用户的记录:

opts.add_argument("user-data-dir=/home/user/.config/google-chrome/selenium")
opts.add_argument('headless')
opts.add_argument('no-sandbox')
browser = webdriver.Chrome(chrome_options=opts)
上面示例中的目录selenium是默认目录的副本,默认目录也在该目录中


因此,在我的例子中,我开发了一些代码来检查我希望发布的文本,如果我有非BMP文本,则作为默认用户运行脚本。(我更喜欢以非默认用户身份运行,因此我不会疯狂地登录网站。)

这将解决以默认用户身份运行Chrome的Linux环境中的问题:

opts.add_argument("user-data-dir=/home/user/.config/google-chrome/selenium")
opts.add_argument('headless')
opts.add_argument('no-sandbox')
browser = webdriver.Chrome(chrome_options=opts)
如果没有程序xsel,可以使用类似于
sudo-yum-install-xsel
的东西安装它

如果您以非默认用户的身份运行Chrome,试图记住Cookie等,则此操作不起作用。以下是您如何成为非默认用户的记录:

opts.add_argument("user-data-dir=/home/user/.config/google-chrome/selenium")
opts.add_argument('headless')
opts.add_argument('no-sandbox')
browser = webdriver.Chrome(chrome_options=opts)
上面示例中的目录selenium是默认目录的副本,默认目录也在该目录中


因此,在我的例子中,我开发了一些代码来检查我希望发布的文本,如果我有非BMP文本,则作为默认用户运行脚本。(我更喜欢以非默认用户身份运行,因此我不会疯狂地登录网站。)

您是否尝试过为这些字符查找UNICODE代码?e、 g.
U+0041
表示“A”等。一旦你这样做了,你应该能够发送他们所有。查看任何列表,例如,@JeffC:Yup,这就是我所说的我试图发送该字符串的unicode编码版本时的意思。这也导致
缺少命令参数
异常。您是否尝试查找这些字符的UNICODE代码?e、 g.
U+0041
表示“A”等。一旦你这样做了,你应该能够发送他们所有。查看任何列表,例如,@JeffC:Yup,这就是我所说的我试图发送该字符串的unicode编码版本时的意思。这也导致
缺少命令参数
异常