生产场景实战 — 左击 · 右击 · 双击 · 移动 · 按住 · 释放 · 拖拽 · 滚动
本页面的 8 道作业题均取材于真实生产环境常见的测试场景(电商后台 / 管理系统 / 看板协作 / 交互组件)。每个场景都提供了可视化的前端 demo,你需要用 Selenium ActionChains API 完成对应的自动化操作。
element.click() 循环点击 或 ActionChains(driver).click(el).perform()CLASS_NAME="h6_add_btn"(预期 6 个)#h6_cart_badge 的 data-count 属性最终值 == "6"ActionChains(driver).context_click(row_el).perform()context_click,页面会弹出一个绝对定位的自定义右键菜单By.ID("h6_target_row")(第 5 行"王五")ActionChains.context_click(row).perform()| ID | 用户名 | 邮箱 | 部门 | 状态 | 注册时间 |
|---|---|---|---|---|---|
| 1 | 张三 | zhangsan@demo.com | 研发部 | 在线 | 2024-03-15 |
| 2 | 李四 | lisi@demo.com | 产品部 | 在线 | 2024-04-20 |
| 3 | 赵六 | zhaoliu@demo.com | 运营部 | 待审核 | 2024-05-10 |
| 4 | 钱七 | qianqi@demo.com | 市场部 | 在线 | 2024-06-01 |
| 5 | 王五 | wangwu@demo.com | 财务部 | 在线 | 2024-06-18 |
| 6 | 孙八 | sunba@demo.com | 人事部 | 在线 | 2024-07-05 |
ActionChains(driver).double_click(cell_el).perform()<input> 输入框,value 为原值By.ID("h6_salary_cell")(赵六 · 实发工资)ActionChains.double_click(cell).perform()"9999" 后 send_keys(Keys.ENTER)| ID | 姓名 | 部门 | 基本工资 | 绩效奖金 | 实发工资 | 备注 |
|---|---|---|---|---|---|---|
| 1 | 张三 | 研发部 | 15000 | 3000 | 18000 | 正常 |
| 2 | 李四 | 产品部 | 12000 | 2500 | 14500 | 正常 |
| 3 | 赵六 | 运营部 | 10000 | 2000 | 12000 | 正常 |
| 4 | 钱七 | 市场部 | 11000 | 1800 | 12800 | 正常 |
| 5 | 王五 | 财务部 | 13000 | 2200 | 15200 | 正常 |
ActionChains(driver).move_to_element(trigger).perform() → 展开子菜单后再 click 子项:hover 会让子菜单显示(display:block)#h6_mega_nav > ul > li 中包含 "手机通讯" 的 liActionChains.move_to_element(top_li).perform(),time.sleep(0.3)#h6_p4_result 存在且 text 包含 "智能手机"ActionChains(driver).click_and_hold(thumb).move_by_offset(dx,0).release().perform()By.ID("h6_price_thumb") + 轨道 #h6_price_trackdx = int(track_w * 0.60)click_and_hold(thumb).move_by_offset(dx-16,0).release().perform()#h6_price_val text 在 5500 ~ 6500 范围内ActionChains(driver).click_and_hold(origin).move_by_offset(x1,y1).move_by_offset(x2,y2)...release().perform()By.ID("h6_sign_canvas")time.sleep(0.4) 让 canvas 状态落盘ActionChains(driver).drag_and_drop(source_card, target_col).perform().kanban-col.todo / .kanban-col.doing / .kanban-col.done.kanban-cardActionChains.drag_and_drop(card, doing_col).perform()drag_and_drop(card, done_col).perform()ActionChains(driver).scroll_to_element(target_last_item).perform() 或 driver.execute_script("el.scrollTop = el.scrollHeight")By.ID("h6_feed")execute_script("feed.scrollTop=feed.scrollHeight", feed) + sleep 1.2sBy.CLASS_NAME, "feed-item" 数量 ≥ 11#h6_feed_end 此时 应该显示feed.scrollTop = feed.scrollHeight 模拟滚到底部