机器人框架按CapsLock键

时间:2017-12-21 22:58:20

标签: selenium robotframework keyboard-events selenium2library

我正在使用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键。

2 个答案:

答案 0 :(得分:1)

简短的回答是,这是不受支持的。对非字母键的支持仅限于Selenium模块中指定的那些。在Webdriver/Common/Keys.py中找到所有支持的密钥。您可以在此处找到对tabenter键的支持。 Caps键不在其中。

在SeleniumHQ问题页面中搜索此遗漏时,有一个参考:请添加发送功能" CAPSLOCK"在webdriver中。 #785。这里陈述如下:

  

这超出了范围tbh。

     

不幸的是,并非所有计算机都带有大写锁定,因此关闭此功能   因为有一个持有转移的解决方法

这并不意味着它是不可能的,只是Selenium及其衍生的SeleniumLibrary不支持这一点。为了在测试会话期间按下此键,需要加载特定于操作系统的Python模块,并为您按下此键。对于Windows,Microsoft SendKeys功能可以执行此操作。在这个Stack Overflow answer中,您可以找到有关如何在Windows和Linux中使用此方法的更多详细信息。

答案 1 :(得分:1)

感谢所有寻求解决问题的人。

使用下面提供的ImageHorizo​​nLibrary找到了一个可行的解决方案

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