我正在使用Robot Framework selenium2library来自动化Chromium Embedded应用程序。 要求是测试如果启用了Caps Lock键,窗口是否显示工具提示。
Press Key #element_id \\\20
我使用上面的代码启用大写锁定密钥,其中包含20作为Caps Lock密钥的ASCII代码。但上面的代码不起作用。 相同的语法适用于Enter键(ASCII值13)和Tab键(ASCII值09),如下所示。
Press Key #element_id \\\13
Press Key #element_id \\\09
有人可以帮助我使用Robot Framework来实现Caps Lock键。
答案 0 :(得分:1)
简短的回答是,这是不受支持的。对非字母键的支持仅限于Selenium模块中指定的那些。在Webdriver/Common/Keys.py中找到所有支持的密钥。您可以在此处找到对tab
和enter
键的支持。 Caps键不在其中。
在SeleniumHQ问题页面中搜索此遗漏时,有一个参考:请添加发送功能" CAPSLOCK"在webdriver中。 #785。这里陈述如下:
这超出了范围tbh。
不幸的是,并非所有计算机都带有大写锁定,因此关闭此功能 因为有一个持有转移的解决方法
这并不意味着它是不可能的,只是Selenium及其衍生的SeleniumLibrary不支持这一点。为了在测试会话期间按下此键,需要加载特定于操作系统的Python模块,并为您按下此键。对于Windows,Microsoft SendKeys功能可以执行此操作。在这个Stack Overflow answer中,您可以找到有关如何在Windows和Linux中使用此方法的更多详细信息。
答案 1 :(得分:1)
感谢所有寻求解决问题的人。
使用下面提供的ImageHorizonLibrary找到了一个可行的解决方案
https://github.com/Eficode/robotframework-imagehorizonlibrary https://github.com/Eficode/robotframework-imagehorizonlibrary/blob/master/tests/atest/windows_tests.robot
我使用上述库的工作代码:
Library ImageHorizonLibrary
*** Keywords ***
CheckCapsLockOnNotification
Press Key ${UsernameTextElement} \\09 #For Tab key
Type Key.CAPSLOCK #For CapsLock Key
Type pass #Typing keyboard letters
Page Should Contain Element ${CapsLockOnTooltipElement}
Clear Element Text ${PasswordTextElement}
Type Key.CAPSLOCK