Robot Framework使用Python,按键不选择页面中的任何按钮或元素

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)

所以有人能给我一个摆脱这个问题的解决方案吗?

提前致谢 :)

Ane*_*med 5

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)


Tod*_*kov 5

如果您想将按键事件发送到页面,但不是发送到特定元素 -<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)

  • 有linux替代方案吗? (2认同)