與網頁元素互動

用於操作表單控件的高階指令集。

只有 5 個基本命令可以在元素上執行

  • click(適用於任何元素)
  • send keys(僅適用於文字欄位和內容可編輯元素)
  • clear(僅適用於文字欄位和內容可編輯元素)
  • submit(僅適用於表單元素)
  • select(請參閱選擇列表元素

其他驗證

這些方法旨在密切模擬用戶的體驗,因此,與 Actions API 不同,它在嘗試執行指定的動作之前,會嘗試執行兩件事。

  1. 如果它確定元素在視窗外,它會將元素滾動到視窗中,特別是它會將元素的底部與視窗的底部對齊。
  2. 它確保元素在執行動作之前是可互動的。 這可能表示滾動不成功,或者元素未以其他方式顯示。 判斷元素是否顯示在頁面上太難以直接在 webdriver 規範中定義,因此 Selenium 會發送一個執行命令,其中包含一個 JavaScript 原子,用於檢查會阻止元素顯示的事物。 如果它確定元素不在視窗中、未顯示、不是鍵盤可互動的,也不是指標可互動的,它會返回一個元素不可互動錯誤。

點擊

元素點擊命令元素的中心點執行。 如果元素的中心點由於某些原因被遮擋,Selenium 將返回一個元素點擊被攔截錯誤。

        driver.get("https://selenium.programming.tw/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.programming.tw/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.programming.tw/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.programming.tw/selenium/web/inputs.html")

    // Click the element
    driver.findElement(By.name("color_input")).click();
  
  

發送按鍵

元素發送按鍵命令將提供的按鍵輸入到可編輯元素中。 通常,這表示元素是表單的 input 元素,類型為 text,或具有 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.programming.tw/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")
  
  

清除

元素清除命令重置元素的內容。 這要求元素是可編輯的,並且是可重置的。 通常,這表示元素是表單的 input 元素,類型為 text,或具有 content-editable 屬性的元素。 如果不符合這些條件,則會返回無效的元素狀態錯誤。

        //Clear Element
        // Clear field to empty it from any previous data
        emailInput.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.programming.tw/selenium/web/inputs.html');
  
    // Navigate to Url
    driver.get("https://selenium.programming.tw/selenium/web/inputs.html")

	//Clear field to empty it from any previous data
	driver.findElement(By.name("email_input")).clear()
	
  
  

提交

在 Selenium 4 中,這不再使用單獨的端點實現,而是通過執行腳本來實現。 因此,建議不要使用此方法,而是點擊適用的表單提交按鈕。