web-dev-qa-db-ja.com

Pythonを使用したRobotFramework、ページ内のボタンや要素を選択せず​​にキーを押す

Pythonを使用したRobotFrameworkを使用して1つのアプリケーションを自動化しています。特定の状況では、私は押す必要があります Enter ページが読み込まれると、ページのボタンや要素を選択せず​​に。

以下の例で試してみました( Press Key )しかし、押す前にページの特定のボタンや要素を選択したくないので、機能しませんでした Enter ページ上。

例:

Press Key    text_field     q
Press Key    login_button   \\\13    # ASCII code for the Enter key

以下のキーワードは、おそらくバージョンが原因で、IDEによって認識されません。

Press Key Native

この問題を取り除くための解決策はありますか?

6

キー押下イベントをページに送信するが、特定の要素では送信しない場合は、<body>キーワードを使用して、ページのPress Key要素をターゲットにします。

Press Key   xpath=//body        \ue00f    # this is the Page Down key
Press Key   css=body            \ue00e    # and this - Page Up

キーコードの最新のリストはSeleniumのソースにあり、 webdriver.common.Keysモジュール はそれらの定義を保持しています。


OSでキーストロークを実行するIMHOライブラリ(AutoItやJavaのロボットなど)は、可能であれば避ける必要があります-自動化スクリプトを実行マシン(およびオペレーティングシステム)に依存させ、ローカルのみにします-ブラウザのテストを実行することはできませんSeleniumハブ(ソースラボ、Browsertstack、同様)。

3
Todor Minakov

Robot Framework Seleniumライブラリは、キー押下のみを要素に送信できます。実際のキー押下を送信する場合は、それを実行する独自のライブラリを作成する必要があります。 Windowsでは、これはSendKeysモジュールを使用して実行できます。

これは、RobotFrameworkの「SendEnterKey」キーワードを定義するライブラリです。 Chromeですばやくテストしましたが、PhantomJSで問題が発生する可能性があります。

import SendKeys

def send_enter_key():
    """
    Sends ENTER key to application
    Works only in Windows
    """
    SendKeys.SendKeys("{ENTER}")
2
Pekka

Linuxの代替は PyAutoGUI

ドキュメントで説明されているように、WindowsとMacOS(クロスプラットフォーム)でも機能しますが

PyAutoGUIはPython 2&3で動作します。pip install pyautoguiを使用してPyPIからインストールします

例:

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
2
Aneez Ahmed

3つではなく2つのスラッシュで試してください。

Press Key    text_field     q   
Press Key    login_button   \\13   # ASCII code for the Enter key
1
user8230233

キーを押すキーワードでそれを行うことができます:

  • キー\ ENTERを押します
  • キーを押す\例単語を書く
  • キー\ Tabを押します

など...私はRobotFramework 3.1.1(win32上のPython 2.7.9)と SeleniumLibrary を持っています。

0
janizei