Aru*_*pta 6 keypress python-2.7 robotframework
我正在使用Python使用机器人框架自动化一个应用程序.在某种情况下,我需要在加载页面后按下回车而不选择页面的任何按钮或元素.
我尝试过以下示例,但它不起作用,因为我不想在页面上按Enter键之前选择页面的任何特定按钮或元素.
例子:
Press Key text_field q
Press Key login_button \\\13 # ASCII code for the Enter key
Run Code Online (Sandbox Code Playgroud)
IDE无法识别以下关键字,很可能是因为版本:
Press Key Native
Run Code Online (Sandbox Code Playgroud)
所以有人能给我一个摆脱这个问题的解决方案吗?
提前致谢 :)
Linux 的替代方案是PyAutoGUI
虽然它也适用于 Windows 和 MacOS(跨平台),如文档中所述
PyAutoGUI 适用于 Python 2 和 3。从 PyPI 安装
pip install pyautogui
例子:
import pyautogui
def send_keys():
"""
Works on Windows/Mac/Linux
"""
pyautogui.press('enter') #Presses enter
pyautogui.hotkey('ctrl', 'shift', 'esc') #Performs ctrl+shift+esc
pyautogui.typewrite('Hello world!\n', interval=secs_between_keys) #Useful for entering text, newline is Enter
pyautogui.typewrite(['a', 'b', 'c', 'left', 'backspace', 'enter', 'f1'], interval=.4) #A list of key names can be passed too
Run Code Online (Sandbox Code Playgroud)
如果您想将按键事件发送到页面,但不是发送到特定元素 -<body>使用关键字定位页面中的元素Press Key:
Press Key xpath=//body \ue00f # this is the Page Down key
Press Key css=body \ue00e # and this - Page Up
Run Code Online (Sandbox Code Playgroud)
最新的关键代码列表可以在 selenium 的源代码中找到,webdriver.common.Keys 模块保存了它们的定义。
恕我直言,如果可能的话,应该避免在操作系统中执行击键的库(例如 AutoIt 或 Java 的机器人) - 它们使您的自动化脚本依赖于执行机器(和操作系统),并且仅在本地 - 您无法运行浏览器测试Selenium Hub(Sauce labs、Browsertstack 等)。
小智 2
Robot Framework Selenium 库只能将按键发送到元素。如果您想发送实际的按键,您需要编写自己的库来执行此操作。在 Windows 中,这可以使用 SendKeys 模块来完成。
这是一个为机器人框架定义“发送输入键”关键字的库。我在Chrome上快速测试了一下,可能PhantomJS有问题。
import SendKeys
def send_enter_key():
"""
Sends ENTER key to application
Works only in Windows
"""
SendKeys.SendKeys("{ENTER}")
Run Code Online (Sandbox Code Playgroud)