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
この問題を取り除くための解決策はありますか?
キー押下イベントをページに送信するが、特定の要素では送信しない場合は、<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、同様)。
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}")
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
3つではなく2つのスラッシュで試してください。
Press Key text_field q
Press Key login_button \\13 # ASCII code for the Enter key
キーを押すキーワードでそれを行うことができます:
など...私はRobotFramework 3.1.1(win32上のPython 2.7.9)と SeleniumLibrary を持っています。