自动化测试中如何选择相同data-test ID的随机/指定序号元素
定位指定序号的书籍元素
所有书籍共用同一个data-testid的情况下,你可以先获取该ID对应的所有元素集合,再通过索引定位目标序号的书籍。注意不同测试框架的索引起始值可能不同(多数框架从0开始计数):
Selenium(Python):
先获取元素列表,再取对应索引(第10本对应索引9,第15本对应索引14):from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() # 获取所有带目标data-testid的书籍元素 books = driver.find_elements(By.CSS_SELECTOR, '[data-testid="你的测试ID值"]') # 定位第10本书 tenth_book = books[9] # 定位第15本书 fifteenth_book = books[14]Cypress:
使用eq()方法(索引从0开始)或者:nth-child伪类(从1开始计数):// 定位第10本书 cy.get('[data-testid="你的测试ID值"]').eq(9) // 或者用:nth-child(书籍需为同级元素) cy.get('[data-testid="你的测试ID值"]:nth-child(10)') // 定位第15本书 cy.get('[data-testid="你的测试ID值"]').eq(14)Playwright:
获取元素列表后通过索引直接选取:from playwright.sync_api import sync_playwright with sync_playwright() as p: browser = p.chromium.launch() page = browser.new_page() # 获取所有书籍元素 books = page.locator('[data-testid="你的测试ID值"]').all() # 第10本 tenth_book = books[9] # 第15本 fifteenth_book = books[14] browser.close()
随机选择书籍元素
核心思路是先获取所有元素集合,生成一个在集合长度范围内的随机索引,再选取对应元素:
Selenium(Python):
import random from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() books = driver.find_elements(By.CSS_SELECTOR, '[data-testid="你的测试ID值"]') # 生成随机索引 random_index = random.randint(0, len(books)-1) random_book = books[random_index]Cypress:
cy.get('[data-testid="你的测试ID值"]').then(($books) => { // 生成随机索引 const randomIndex = Math.floor(Math.random() * $books.length) // 选取并操作随机元素 $books.eq(randomIndex).click() })Playwright:
import random from playwright.sync_api import sync_playwright with sync_playwright() as p: browser = p.chromium.launch() page = browser.new_page() books = page.locator('[data-testid="你的测试ID值"]').all() random_index = random.randint(0, len(books)-1) random_book = books[random_index] random_book.click() browser.close()
内容的提问来源于stack exchange,提问作者prabu mani
相关产品推荐
相关产品推荐

