忙活了大半天!在项目中遇到文本输入框验证时,需要输入表情符号,于是动手去尝试,发现python默认支持utf-8,直接输入表情符号“😊”是无法被正确转义的,原因是Selenium的send.keys方法不支持。
于是尝试找到表情符号的转义编码:大致像:
“u’\U0001f436’ + u’\u200D’ + u’\U0001f431’ + u’\u200D’ + u’\U0001f42d’”
这种Unicode编码格式。
直接放进send.keys中也不行:
会报错:
查明原因是因为谷歌浏览器驱动暂时不支持这种格式的输入,但是火狐驱动也就是Firefoxdriver应该可以支持,我没有去尝试,感觉比较麻烦,于是继续尝试第二种方案,就是利用JavaScript。
下面贴上部分代码:
JS_ADD_TEXT_TO_INPUT = """
var elm = arguments[0], txt = arguments[1];
elm.value += txt;
elm.dispatchEvent(new Event('change'));
b = u'\U0001f436' + u'\u200D' + u'\U0001f431' + u'\u200D' + u'\U0001f42d'
elem = driver.find_element(By.XPATH, '//*[@id="kw"]')
driver.execute_script(JS_ADD_TEXT_TO_INPUT, elem, b)
OK,大致就是这些主要的改变。
下面是用百度输入框的完整例子:
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
JS_ADD_TEXT_TO_INPUT = """
var elm = arguments[0], txt = arguments[1];
elm.value += txt;
elm.dispatchEvent(new Event('change'));
b = u'\U0001f436' + u'\u200D' + u'\U0001f431' + u'\u200D' + u'\U0001f42d'
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
elem = driver.find_element(By.XPATH, '//*[@id="kw"]')
driver.execute_script(JS_ADD_TEXT_TO_INPUT, elem, b)
driver.find_element(By.XPATH, '//*[@id="su"]').click()
sleep(2)
driver.close()
OK,搞定了,让我们来看看结果吧:

成功输入表情!
最近自己在做项目的自动化测试(公司无此要求),在用户管理模块做修改用户信息时,脚本已经跑成功,并且的确做了update操作,但是自己登陆页面检查,信息却没有被修改,再次确定系统该模块的编辑功能可用,脚本如下:
if result_num>1:
print Begin to change user infomations
driver.find_element_by_xpath(//*[@id='tbodyUserInfo']/tr/td[8]/img[2]).click()
driver.implicitly_wait(15)
driver.find_element_by_id(u
Find emojis by name or description
???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ☺️ ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ????
Caused by: java.sql.SQLException: Incorrect string value: 'xF0x9Fx94xA5' for column Emoji表情存储到Mysql中时报错。ios的表情(emoji表情),这种表情虽然是utf8编码,但是一个字符需要占用4个字节,而MySQL utf8编码只能存放3字节的字符。在MySQL 5.6中,可以设置编码为utf8mb4,...
/** * @Description 将字符串中的emoji表情转换成可以在utf-8字符集数据库中保存的格式(表情占4个字节,需要utf8mb4字符集) * @param str * 待转换字符串 * @return 转换后字符串 * @throws UnsupportedEncodingException * ...
我正在尝试使用selenium的send_keys将表情符号字符发送到带有以下python代码的文本框中.browser = webdriver.Chrome(chrome_options=options)browser.get("https://www.google.co.in")time.sleep(5)working = browser.find_element_by_id('lst-ib'...
若想python实现控制浏览器,自动打开、输入、点击等操作,需要用到python的一个库,selenium
首先,和其它所有Python库一样,selenium需要安装,方法也很简单, 使用pip安装。
pip install selenium # Windows电脑安装selenium
pip3 install selenium # Mac电脑安装selenium
selenium的脚本可以控制所有常见浏览器的操作,在使用之前,需要安装浏览器的驱动。
推荐使用Chrome浏览器,具体安装教程见下链接
在开发的功能交付测试的时候,测试提出来文本框不能输入表情的bug(这也算一个bug?哪位大神会进行这样的反人类操作啊),说归说,既然提出来了,那咱还得改不是,具体代码如下所示:
首先声明一个输入框:
<a-form-item label="" name="searchValue">
<a-input v-model:value.trim="formState.searchValue" autocomplete="off" placeholder="请输入姓名或工号" @ch
题图来自网络,侵删Vue 中有若干个“语法糖”:v-model 语法糖{{ }} 插值语法糖组件注册语法糖arr.$set 语法糖后三种语法糖即使不深入理解,也可以直接应用,然而如果没有充分理解第一种语法糖,那么就可能遇到一些奇怪的问题。考虑如下需求:编写一个自定义指令,使得在文本输入框中输入的敏感词(如:f..k)自动删除,并更新通过 v-model 指令所绑定的 Vue 实例数据。自定义指令定...
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable 报错信息说明元素不能操作,也可能是没有找到元素所以我的send_keys操作报错了。# 获取元素的html。# 选择器方式获取元素。# 获取当前活动元素。
已解决(selenium向input文本框输入内容失败问题)selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
我正在尝试使用python selenium将键发送到以下textarea html:For example, flowers or used cars Input contains a keyword that is too long. Your product or service description can't exceed 1,000 words. Remove some words...