キーボードアクション
ウェブページと対話するための任意のキー入力デバイスの表現。
高レベルの要素のインタラクションに加えて、Actions API は、指定された入力デバイスが正確に何ができるかを細かく制御できます。Selenium は、3 種類の入力ソースのインターフェースを提供します。キーボードデバイス用のキー入力、マウス、ペン、またはタッチデバイス用のポインター入力、およびスクロールホイールデバイス用のホイール入力(Selenium 4.2 で導入)。Selenium を使用すると、特定の入力に割り当てられた個々のアクションコマンドを構築し、それらをチェーン化し、関連付けられた perform メソッドを呼び出して、それらをすべて一度に実行できます。
レガシー JSON Wire Protocol から新しい W3C WebDriver Protocol への移行において、アクションの低レベルビルディングブロックは特に詳細になりました。非常に強力ですが、各入力デバイスには多数の使用方法があり、複数のデバイスを管理する必要がある場合は、デバイス間の適切な同期を確保する責任があります。
ありがたいことに、ほとんどの場合、低レベルコマンドを直接使用する方法を学ぶ必要はありません。なぜなら、あなたがやりたいと思うことのほぼすべてに、より低レベルのコマンドを組み合わせた便利なメソッドが提供されているからです。これらはすべて、キーボード、マウス、ペン、および ホイール のページにドキュメント化されています。
ポインターの動きとホイールのスクロールでは、アクションの期間を設定できますが、アクションが正しく機能するために、アクション間に少し待つ必要がある場合があります。
WebElement clickable = driver.findElement(By.id("clickable"));
new Actions(driver)
.moveToElement(clickable)
.pause(Duration.ofSeconds(1))
.clickAndHold()
.pause(Duration.ofSeconds(1))
.sendKeys("abc")
.perform();
clickable = driver.find_element(By.ID, "clickable")
ActionChains(driver)\
.move_to_element(clickable)\
.pause(1)\
.click_and_hold()\
.pause(1)\
.send_keys("abc")\
.perform()
IWebElement clickable = driver.FindElement(By.Id("clickable"));
new Actions(driver)
.MoveToElement(clickable)
.Pause(TimeSpan.FromSeconds(1))
.ClickAndHold()
.Pause(TimeSpan.FromSeconds(1))
.SendKeys("abc")
.Perform();
clickable = driver.find_element(id: 'clickable')
driver.action
.move_to(clickable)
.pause(duration: 1)
.click_and_hold
.pause(duration: 1)
.send_keys('abc')
.perform
const clickable = await driver.findElement(By.id('clickable'))
await driver.actions()
.move({ origin: clickable })
.pause(1000)
.press()
.pause(1000)
.sendKeys('abc')
.perform()
val clickable = driver.findElement(By.id("clickable"))
Actions(driver)
.moveToElement(clickable)
.pause(Duration.ofSeconds(1))
.clickAndHold()
.pause(Duration.ofSeconds(1))
.sendKeys("abc")
.perform()
注意すべき重要な点は、ドライバはセッション全体を通してすべての入力項目の状態を記憶しているということです。アクションクラスの新しいインスタンスを作成した場合でも、押下されたキーとポインターの位置は、以前に実行されたアクションが残した状態になります。
現在押下されているすべてのキーとポインターボタンを解放するための特別なメソッドがあります。このメソッドは、perform メソッドでは実行されないため、各言語で異なる方法で実装されています。
((RemoteWebDriver) driver).resetInputState();
ActionBuilder(driver).clear_actions()
((WebDriver)driver).ResetInputState();
driver.action.release_actions
await driver.actions().clear()
(driver as RemoteWebDriver).resetInputState()
ウェブページと対話するための任意のキー入力デバイスの表現。
ウェブページと対話するための任意のポインターデバイスの表現。
ウェブページと対話するためのペン型スタイラスのポインター入力の表現。
ウェブページと対話するためのスクロールホイール入力デバイスの表現。
詳細またはスポンサーの完全なリストをご覧ください。