繁体   English   中英

Python Selenium send_keys〜如何发送高级Unicode字符

[英]Python Selenium send_keys ~ How to send advanced Unicode Characters

为了编写一个测试用例,以测试字符串输入字段是否确实存在于所有可能的输入中,我编译了一个“ Omega Death String”,其中包含来自每个当前Unicode块的字符。 这里是:

␡ÆĦǣʨ˧͚ΔѨ֍ࢥޛچضغ߷ࠇउगऴ৳ਸ਼ષନஹౙಯ൷ෂท໖༺ဪჭᆅቘᎆᎹᐇᚙᛤᜇᜰᝇᝧ៘ᢆᣢᢆᢆᡆᤗᥘᦜ᧻ᨋᩗ᪶ᬑᮼᯥᰒᱫᲇ᳄᳷ᵹᶋ᷼ỸὮ※ₘ₹⃟™ↈ↹∰⌦␥⑆⓭╃▙◍♅❦⟗⟹⡕⥇⧉⩷⭖Ⱗⱷ𔒒⳧ⴥⵥⶻⷵ⸾⻭⽧⿷〶きラ鏡狐ㄦㅶ㆗ㆧ㇡ㇺ㈿㍇㑴䷺亘ꁚ꓂ꓩꔫꚖꚼ꜕Ꝧꠚ꠷ꡪꢸꣶꤥꥅꥺ꧄ꧨꩆꩶ꫞ꫩꬤꭔꮚ꯹걗ퟶ珞ﬦﮖ︌︗︩︾﹠ﻉレ￿𐁖𐁖𐄩𐅥𐆠𐇒𐊃𐋈𐋭𐌆𐍊𐍫𐎆𐎢𐐦𐑸𐒦𐓨𐔣𐕗𐛪𐠩𐡗𐡸𐢙𐣴𐤇𐤸𐦖𐧧𐩕𐩸𐪗𐫘𐬳𐭞𐭬𐮯𐰦𐲬𐹽𑁍𑂌𑃦𑄻𑅥𑇚𑇴𑈥𑊗𑋃𑌆𑑘𑒦𑒦𑘦𑙦𑚅𑜿𑣯𑨧𑪞𑫸𑰹𑲧𑴔𒀚𒐧𒒲𓃣𔒒𖡗𖩧𖫪𖭅𖼼𖿡𗀗𘠷𛁉𛄕𛆶𛱷𛲢𛲢𝁅𝄞𝈝𝍖𝍨𝒬𝡇𞀘𞡨𞡨𞥟𞥟𞹧🀨🁾🂡🆨🈵🌜😸🙥🛸🝖🟁🢪🦊𠁧冤

我最初尝试通过send_keys发送Omega Death String,但是导致selenium.common.exceptions.WebDriverException: Message: missing command parameters

我也已经尝试过使用execute_script通过JavaScript发送它,以及尝试发送该字符串的unicode编码版本,但是都没有用。

现在,我想我只是将Omega Death String修剪成仅包含来自基本多语言平面的字符,但是如果有人想出一种使用Selenium for Python可靠地输入它的方法,我会非常感兴趣。

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

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")

如果没有xsel程序,则可以使用sudo yum install 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)

上例中的目录硒是默认目录的副本,该目录也在该目录中。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM