ウェブ要素の操作
フォームコントロールを操作するための高レベルの命令セット。
要素に対して実行できる基本的なコマンドは 5 つだけです。
- click (すべての要素に適用)
- send keys (テキストフィールドとコンテンツ編集可能な要素にのみ適用)
- clear (テキストフィールドとコンテンツ編集可能な要素にのみ適用)
- submit (フォーム要素にのみ適用)
- select (「選択リスト要素」を参照)
追加の検証
これらのメソッドは、ユーザーのエクスペリエンスを綿密にエミュレートするように設計されているため、Actions API とは異なり、指定されたアクションを試行する前に 2 つのことを実行しようとします。
- 要素がビューポートの外にあると判断した場合、要素をビューにスクロールします。具体的には、要素の下部をビューポートの下部に揃えます。
- アクションを実行する前に、要素がインタラクティブであることを確認します。これは、スクロールが失敗したか、要素がそれ以外に表示されていないことを意味する可能性があります。要素がページに表示されているかどうかを判断することは、webdriver 仕様で直接定義するには困難すぎたため、Selenium は、要素が表示されないようにするものをチェックする JavaScript atom を使用して execute コマンドを送信します。要素がビューポートにない、表示されていない、キーボード操作可能でない、またはポインタ操作可能でないと判断した場合、要素がインタラクティブでないエラーを返します。
クリック
要素のクリックコマンドは、要素の中心で実行されます。要素の中心が何らかの理由で遮られている場合、Selenium は要素のクリックがインターセプトされたエラーを返します。
driver.get("https://selenium.dokyumento.jp/selenium/web/inputs.html");
// Click on the element
WebElement checkInput=driver.findElement(By.name("checkbox_input"));
checkInput.click();
# Navigate to URL
driver.get("https://selenium.dokyumento.jp/selenium/web/inputs.html")
# Click on the checkbox
check_input = driver.find_element(By.NAME, "checkbox_input")
check_input.click()
// Navigate to Url
driver.Navigate().GoToUrl("https://selenium.dokyumento.jp/selenium/web/inputs.html");
// Click on the element
IWebElement checkInput = driver.FindElement(By.Name("checkbox_input"));
checkInput.Click();
driver.find_element(name: 'color_input').click
await submitButton.click();
// Navigate to Url
driver.get("https://selenium.dokyumento.jp/selenium/web/inputs.html")
// Click the element
driver.findElement(By.name("color_input")).click();
キーを送信
要素のキー送信コマンドは、提供されたキーを編集可能な要素に入力します。通常、これは要素が text
タイプのフォームの input 要素であるか、content-editable
属性を持つ要素であることを意味します。編集可能でない場合、無効な要素の状態エラーが返されます。
こちらは、WebDriver がサポートする可能性のあるキーストロークのリストです。
// Clear field to empty it from any previous data
WebElement emailInput=driver.findElement(By.name("email_input"));
emailInput.clear();
//Enter Text
String email="admin@localhost.dev";
emailInput.sendKeys(email);
# Handle the email input field
email_input = driver.find_element(By.NAME, "email_input")
email_input.clear() # Clear field
email = "admin@localhost.dev"
email_input.send_keys(email) # Enter text
//SendKeys
// Clear field to empty it from any previous data
IWebElement emailInput = driver.FindElement(By.Name("email_input"));
emailInput.Clear();
//Enter Text
String email = "admin@localhost.dev";
emailInput.SendKeys(email);
driver.find_element(name: 'email_input').send_keys 'admin@localhost.dev'
let inputField = await driver.findElement(By.name('no_type'));
// Navigate to Url
driver.get("https://selenium.dokyumento.jp/selenium/web/inputs.html")
//Clear field to empty it from any previous data
driver.findElement(By.name("email_input")).clear()
// Enter text
driver.findElement(By.name("email_input")).sendKeys("admin@localhost.dev")
クリア
要素のクリアコマンドは、要素の内容をリセットします。これには、要素が編集可能であり、リセット可能である必要があります。通常、これは要素が text
タイプのフォームの input 要素であるか、content-editable
属性を持つ要素であることを意味します。これらの条件が満たされない場合、無効な要素の状態エラーが返されます。
//Clear Element
// Clear field to empty it from any previous data
emailInput.clear();
email_input.clear()
//Clear Element
// Clear field to empty it from any previous data
emailInput.Clear();
data = emailInput.GetAttribute("value");
driver.find_element(name: 'email_input').clear
await driver.get('https://selenium.dokyumento.jp/selenium/web/inputs.html');
// Navigate to Url
driver.get("https://selenium.dokyumento.jp/selenium/web/inputs.html")
//Clear field to empty it from any previous data
driver.findElement(By.name("email_input")).clear()
送信
Selenium 4 では、これはもはや個別のエンドポイントで実装されておらず、スクリプトを実行することで機能します。そのため、このメソッドを使用せず、代わりに該当するフォーム送信ボタンをクリックすることをお勧めします。