selenium sendkeys方法总结

本文详细介绍了SendKeys功能,解释了如何使用它进行文本输入和快捷键操作,包括特殊字符和功能键的转换规则,以及如何实现组合键和重复按键。适用于自动化测试和脚本编写。

SendKeys可以给element做输出,也可以作为动作快捷键,比如ctrl c ,ctrl v ,.alt, enter等

当作为快捷键时,这些字符按需要转换格式。

当作为输入时,每个按键由一个或多个字符表示,例如输入"a",则表示给当前元素输入字符a,

当需要输入多个字符时,则多个字段连接在一起作为输入,例如输入"abc"。

有一些字符由特殊用途,例如,+,^, %, ~, () 这些字符都时用作特殊用途,当需要这些字符本来的值时,可以使用

{}包括在其中,如{+}表示字符+, {%}表示百分号字符

方括号[] 本身不具有特殊意义但是使用时必须放在大括号中{[},{]},

当需要使用大括号时本来的值时,也需要放在大括号内,如{{}, {}}

 

当需要使用按键功能,例如浏览器在执行某一步后需要按一下回车,需要对按键的代码做特殊处理,

例如按回车键,则sendKeys的内容则应该为{ENTER} 或者 ~

例如需要ESC返回键,则sendkeys的内容应该为 {ESC}

 

其他需要转换的按键有:

SHIFT + 

CTRL  ^ 

ALT % 

BACKSPACE {BACKSPACE}, {BS}, 或 {BKSP} 

BREAK {BREAK} 

CAPS LOCK {CAPSLOCK} 

DEL or DELETE {DELETE} 或 {DEL} 

DOWN ARROW {DOWN} 

END {END} 

ENTER  {ENTER}或 ~ 

ESC {ESC} 

HELP {HELP} 

HOME {HOME} 

INS or INSERT {INSERT} 或 {INS} 

LEFT ARROW {LEFT} 

NUM LOCK {NUMLOCK} 

PAGE DOWN {PGDN} 

PAGE UP {PGUP} 

PRINT SCREEN {PRTSC} 

RIGHT ARROW {RIGHT} 

SCROLL LOCK {SCROLLLOCK} 

TAB {TAB} 

UP ARROW {UP} 

F1 {F1} 

F2 {F2} 

F3 {F3} 

F4 {F4} 

F5 {F5} 

F6 {F6} 

F7 {F7} 

F8 {F8} 

F9 {F9} 

F10 {F10} 

F11 {F11} 

F12 {F12} 

F13 {F13} 

F14 {F14} 

F15 {F15} 

F16 {F16} 

 

如果需要在按键组合键的时候,例如 按 shitf键的同事按下s键,则可以使用括号包含在里面

如 +s 表示按下shift键的同时按一下s键,+sc表示先同时按下shift和s键,然后在按一下c键,+(sc)表示同时按下shift, s, c键

 

如果需要重复按下某个键多少次,表示形式为{key number},这里key 和 number 之间有一个空格, 如 {c 10}表示连续

按下10次c键,{+ 10}表示连续按10次shift键

转载于:https://my.oschina.net/u/3562205/blog/3080967

Selenium 中使用 `send_keys` 方法输入表情符号可能会遇到兼容性问题,因为某些浏览器或页面可能无法正确解析这些特殊字符。为了实现这一功能,可以通过剪贴板的方式间接完成输入操作。 以下是具体的方法: ### 使用剪贴板解决特殊字符输入问题 通过 Python 的 `win32clipboard` 库将包含表情符号的文本复制到剪贴板中,再利用 Selenium 提供的键盘组合键功能(如 Ctrl + V),将剪贴板中的内容粘贴到目标输入框中[^3]。 #### 实现代码示例 ```python import win32clipboard from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys # 创建 WebDriver 对象 driver = webdriver.Edge() # 打开指定网页 driver.get('https://www.example.com/') # 定位输入框元素 element = driver.find_element(By.ID, 'input_id') # 要输入的表情符号或其他特殊文本 text_with_emoji = '😊你好' try: # 打开剪切板并清空其内容 win32clipboard.OpenClipboard() win32clipboard.EmptyClipboard() # 将含有表情符号的字符串放入剪切板 win32clipboard.SetClipboardData(win32clipboard.CF_UNICODETEXT, text_with_emoji) finally: # 关闭剪切板 win32clipboard.CloseClipboard() # 向定位的元素发送 Ctrl + V 组合键以粘贴剪切板的内容 element.send_keys(Keys.CONTROL, 'v') ``` 这种方法能够有效规避因直接调用 `send_keys` 导致的编码错误或不支持特定字符集的问题[^3]。 ### 注意事项 - 上述方法适用于 Windows 平台上的应用程序开发环境;如果运行于其他操作系统,则需寻找相应的剪贴板管理工具替代 `win32clipboard`。 - 浏览器版本以及驱动程序应保持最新状态以便获得最佳兼容性和稳定性[^1]。 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值