上篇文章介紹的是關於瀏覽器的常見操作,接下來,我們將繼續分享關於元素的常見操作,建議收藏、轉發!
在操作元素之前,我們需要了解元素的常見狀態。
is_displayed()
is_enabled()
is_selected()
判斷元素是否顯示
element.is_displayed()
注意:
判斷button
是否顯示,和is_displayed()
容易混淆的是is_enabled()
。
區別在於,直接用element.is_enabled()
方法判斷button
是否顯示,返回值為true
,因為button
是使用CSS
方法判斷是否有效,這並不是真正的方法,需要判斷其class
中是否有值為disabled
來判斷是否真正處於disabled
的狀態.
判斷元素是否有效,即是否為灰化狀態
element.is_enabled()
一般判斷表單元素,如radio或checkbox是否被選中。
element.is_selected()
這部分主要演示的常見點選操作,例如:文字輸入、核取方塊、無線電鈕、選擇選項、滑鼠點選事件等等。
演示案例:
點選(滑鼠左鍵)頁面按鈕:click()
範例程式碼如下:
driver.get("http://localhost:8080/click.html")
button1 = driver.find_element(By.ID, "button1")
is_displayed = button1.is_enabled()
if is_displayed:
button1.click()
演示案例:
點選(滑鼠左鍵)頁面按鈕:submit()
範例程式碼如下:
driver.get("http://localhost:8080/submit.html")
login = driver.find_element(By.ID, "login")
is_displayed = login.is_enabled()
if is_displayed:
login.submit()
# login.click()
小貼士:
支援submit
的肯定支援click
,但是支援click
的,不一定支援submit
,可能會報錯如下:
演示案例:
輸入、清空輸入操作:clear(), send_keys()
範例程式碼如下:
username = driver.find_element(By.CSS_SELECTOR, "input[type='text']")
username.clear()
username.send_keys(u"公眾號:軟體測試君")
# 輸出:公眾號:軟體測試君
print('輸入值:{0}'.format(username.get_attribute("value")))
time.sleep(1)
模擬開啟百度搜尋輸入部落格園,回車操作,範例程式碼如下:
driver.get("https://www.baidu.com/")
driver.find_element(By.ID, "kw").send_keys("久曲健 部落格園", Keys.ENTER)
演示案例:
常見滑鼠操作很多,如左鍵點選、懸浮、移動、雙擊、右鍵等等,範例程式碼如下:
driver.get("http://localhost:8080/mouse.html")
# 滑鼠左鍵點選
ActionChains(driver).click(driver.find_element(By.ID, "mouse2")).perform()
time.sleep(1)
driver.switch_to.alert.accept()
time.sleep(1)
# 滑鼠懸浮並移動操作
ActionChains(driver).move_to_element(driver.find_element(By.ID, "mouse1")).pause(1).move_to_element(
driver.find_element(By.ID, "mouse6")).perform()
time.sleep(1)
driver.switch_to.alert.accept()
# 滑鼠雙擊操作
ActionChains(driver).double_click(driver.find_element(By.ID, "mouse3")).perform()
time.sleep(1)
driver.switch_to.alert.accept()
# 滑鼠右鍵
ActionChains(driver).context_click(driver.find_element(By.ID, "mouse5")).perform()
鍵盤操作 | 對應程式碼 |
---|---|
鍵盤F1到F12 | send_keys(Keys.F1) 把F1改成對應的快捷鍵 |
複製Ctrl+C | send_keys(Keys.CONTROL,'c') |
貼上Ctrl+V | send_keys(Keys.CONTROL,'v') |
全選Ctrl+A | send_keys(Keys.CONTROL,'a') |
剪下Ctrl+X | send_keys(Keys.CONTROL,'x') |
製表鍵Tab | send_keys(Keys.TAB) |
範例程式碼:
# -*- coding: utf-8 -*-
"""
@Time : 2022/10/25 21:39
@Auth : 軟體測試君
@File :element_actions.py
@IDE :PyCharm
@Motto:ABC(Always Be Coding)
"""
import time
from selenium.webdriver import Keys, ActionChains
from selenium.webdriver.common.by import By
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
'''
初始化操作
'''
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
def init():
# 最大化操作
driver.maximize_window()
driver.set_script_timeout(60)
# 智慧等待找到元素後立即繼續執行,全域性生效
driver.implicitly_wait(60)
driver.set_page_load_timeout(60)
init()
'''
元素點選操作
'''
def clickDemo():
# 點選(滑鼠左鍵)頁面按鈕:click()
driver.get("http://localhost:8080/click.html")
button1 = driver.find_element(By.ID, "button1")
is_displayed = button1.is_enabled()
if is_displayed:
button1.click()
# 關閉彈窗
driver.switch_to.alert.accept()
### 元素基本操作
clickDemo()
time.sleep(1)
'''
submit操作
'''
def submitDemo():
# 點選(滑鼠左鍵)頁面按鈕:submit()
driver.get("http://localhost:8080/submit.html")
login = driver.find_element(By.ID, "login")
is_displayed = login.is_enabled()
if is_displayed:
login.submit()
# login.click()
# 小貼士:支援submit的肯定支援click,但是支援click的,不一定支援submit,可能會報錯如下:
submitDemo()
'''
輸入、清空輸入操作
'''
def clearInputDemo():
# 輸入、清空輸入操作:clear() send_keys()
username = driver.find_element(By.CSS_SELECTOR, "input[type='text']")
username.clear()
username.send_keys(u"公眾號:軟體測試君")
# 輸出:公眾號:軟體測試君
print('輸入值:{0}'.format(username.get_attribute("value")))
time.sleep(1)
clearInputDemo()
'''
模擬開啟百度搜尋輸入部落格園,回車操作
'''
def mockEnterDemo():
# 模擬開啟百度搜尋輸入部落格園,回車操作 範例程式碼
driver.get("https://www.baidu.com/")
driver.find_element(By.ID, "kw").send_keys("久曲健 部落格園", Keys.ENTER)
### 鍵盤操作
mockEnterDemo()
def mouseDemo():
driver.get("http://localhost:8080/mouse.html")
# 滑鼠左鍵點選
ActionChains(driver).click(driver.find_element(By.ID, "mouse2")).perform()
time.sleep(1)
driver.switch_to.alert.accept()
time.sleep(1)
# 滑鼠懸浮並移動操作
ActionChains(driver).move_to_element(driver.find_element(By.ID, "mouse1")).pause(1).move_to_element(
driver.find_element(By.ID, "mouse6")).perform()
time.sleep(1)
driver.switch_to.alert.accept()
# 滑鼠雙擊操作
ActionChains(driver).double_click(driver.find_element(By.ID, "mouse3")).perform()
time.sleep(1)
driver.switch_to.alert.accept()
# 滑鼠右鍵
ActionChains(driver).context_click(driver.find_element(By.ID, "mouse5")).perform()
### 常見鍵盤事件操作
mouseDemo()
time.sleep(3)
driver.quit()
到此,常見元素操作演示結束,這裡只是列舉了一些常用的操作,關於其他操作,感興趣的同學請左鍵檢視原始碼 !
我是六哥,如果覺得文章對您有幫助,建議收藏、轉發!
請繼續關注我,我的公眾號:軟體測試君,並幫忙轉發文章到朋友圈。
你的每一次轉發,我都當做了喜歡!