使用 Selenium WebDriver 模拟 ENTER 或 RETURN 的最佳实践是啥
Posted
技术标签:
【中文标题】使用 Selenium WebDriver 模拟 ENTER 或 RETURN 的最佳实践是啥【英文标题】:What is the best practice to simulate an ENTER or RETURN using Selenium WebDriver使用 Selenium WebDriver 模拟 ENTER 或 RETURN 的最佳实践是什么 【发布时间】:2017-12-14 23:38:17 【问题描述】:我遇到了this 解决我最初问题的方法,即使用 Selenium WebDriver 模拟 ENTER 或 RETURN 按键。
但是,在我的代码中,我只想使用 WebElement.sendKeys(Keys.ENTER);
与 WebElement.sendKeys(Keys.RETURN);
两个中的一个。
什么是最好的做法,因为对于使用 enter 或 return 似乎存在分歧,因为两者在大多数情况下都有效?在什么情况下,一种或另一种不起作用,是否有一种总是有效的?
【问题讨论】:
【参考方案1】:就性能而言,我对这两个方面都没有任何改变,
但是是的,我知道它们有一个区别
Keys.Enter
用于数字键盘上的输入键
同时
Keys.Return
用于字母旁边的一个
通常我更喜欢Keys.Enter
,因为有时在某些浏览器中Keys.Return
不适合我
【讨论】:
【参考方案2】:让我们详细分析Keys.ENTER
和Keys.RETURN
。
Keys.ENTER
和 Keys.RETURN
都来自 org.openqa.selenium.Keys
,它扩展了 java.lang.Enum<Keys>
并实现 java.lang.CharSequence
枚举键:
Enum Keys
是非文本的可按下键的表示。这些存储在 Unicode PUA (Private Use Area
) 代码点 0xE000-0xF8FF 中。
关键代码:
他们的特殊keys codes
如下:
u'\ue006'
ENTER = u'\ue007'
所有Enum Keys
的实现都以同样的方式处理。
因此在使用 sendKeys(Keys.ENTER);
时存在 No Functional
或 Operational
区别或 WebElement.sendKeys(Keys.RETURN);
到 Selenium。
输入键和返回键:
在计算机键盘上,Enter(或 Mac OSX 上的 Return)在大多数情况下会导致命令行、窗口窗体或对话框运行其默认功能.这通常是为了完成“输入”并开始所需的过程,通常是按 OK 按钮的替代方法。
Return 通常也称为Enter,它们通常执行相同的功能;但是在某些特定的应用程序(主要是页面布局)中,Return 的操作特别像它所源自的 Carriage Return 键。相比之下,Enter 通常在通用 PC 键盘上以纯文本形式标明其名称。
Wiki 参考资料 :
Enter Key
Carriage Return
【讨论】:
【参考方案3】:作为您自己,我未能在网上找到对此问题的良好解释,因此我使用this Keyboard Events tester 自己进行了测试。
driver.get("https://dvcs.w3.org/hg/d4e/raw-file/tip/key-event-test.html");
WebElement textArea = driver.findElement(By.id("input"));
textArea.sendKeys(Keys.ENTER);
textArea.sendKeys(Keys.RETURN);
结果我得到了这个输出(这是Keys.ENTER
,后跟Keys.RETURN
):
所以这两个选项之间似乎没有区别。
【讨论】:
以上是关于使用 Selenium WebDriver 模拟 ENTER 或 RETURN 的最佳实践是啥的主要内容,如果未能解决你的问题,请参考以下文章
Python Selenium.WebDriver 对Cookies的处理及应用『模拟登录』
如何在 Selenium Webdriver 中模拟 HTML5 拖放?
使用 Selenium WebDriver 模拟 ENTER 或 RETURN 的最佳实践是啥
selenium+python - webdriver模拟键盘ENTER没有效果