尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Selenium相关习题

Selenium相关习题
📅 发布时间:2026/6/29 18:03:37
任务1:打开百度,搜索“地球”
启动Chrome,打开https://www.baidu.com。
用 find_element 定位到搜索框(ID或Name),输入“地球”。
定位“百度一下”按钮,点击。
driver = webdriver.Chrome(service=Service('./chromedriver.exe')) driver.get('https://www.baidu.com') wait = WebDriverWait(driver, 10) wait.until(EC.element_to_be_clickable((By.ID, 'chat-textarea'))).send_keys('地球') driver.find_element(By.ID, 'chat-submit-button').click() input('按任意键继续...')
任务2:登录一个测试网站(45分钟)
推荐练习站: 搜“Selenium 练习网站”或直接用 https://practicetestautomation.com/practice-test-login/ (一个专门用来练登录的)。
定位用户名框、密码框、登录按钮,执行登录。
登录成功后,找到页面上的“Log out”按钮或某个成功提示文本,打印出来。
在这里你会遇到等待的痛点:登录按钮点了之后,页面会跳转,如果你不等,下一个元素就找不到。试着用显式等待解决。
driver = webdriver.Chrome(service=Service('./chromedriver.exe')) driver.get('https://practicetestautomation.com/practice-test-login/') driver.find_element(By.ID, 'username').send_keys('student') driver.find_element(By.ID, 'password').send_keys('Password123') driver.find_element(By.ID, 'submit').click() wait = WebDriverWait(driver, 10) text = wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="loop-container"]/div/article/div[2]/div/div/div/a'))).text print(text) input('按任意键继续...')
任务3:带数据驱动的登录测试(升级,90分钟)
推荐练习站: 搜“Selenium 练习网站”或直接用 https://practicetestautomation.com/practice-test-login/ (一个专门用来练登录的)
。
创建一个CSV或Excel文件,里面有多组用户名和密码(包括正确的和错误的)。
写一个循环,从文件里读取每组数据,执行登录,然后根据预期结果(成功或失败)判断测试是否通过,并用Python的print输出结果。
这是你简历上第一个“自动化测试框架”的雏形,非常重要。

表格数据:

def get_data_from_excel(file_path): wb = openpyxl.load_workbook(file_path) sheet = wb.active data = [] for row in sheet.iter_rows(min_row=2, values_only=True): data.append(row) return data def test_login(username, password): WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.ID, 'username'))).send_keys(username) driver.find_element(By.ID, 'password').send_keys(password) driver.find_element(By.ID, 'submit').click() try: WebDriverWait(driver,5).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="loop-container"]/div/article/div[2]/div/div/div/a'))) except TimeoutException: return False else: return True driver = webdriver.Chrome(service=Service('./chromedriver.exe')) driver.get('https://practicetestautomation.com/practice-test-login/') data = get_data_from_excel('./testdata.xlsx') for username, password in data: login_success = test_login(username, password) if login_success: driver.back() print(f"username = {username},password = {password}登录成功") else: print(f"username = {username},password = {password}登录失败") input('按任意键继续...')
任务4(选做,进阶):使用Page Object模式重构
把任务3转换成Page Object 设计模式。很简单,就是把“一个页面的所有元素定位和操作”封装成一个类,
测试脚本只调用类的方法,看起来特别清晰易维护。
这个模式你只要在面试中能讲出它的好处,就能秒杀很多竞争者:
好维护‌:页面元素变了,只用改对应的页面对象类,不用改所有测试用例 。
‌能复用‌:同一个页面的操作方法可以被多个测试用例重复调用,减少重复代码 。
‌看得懂‌:测试用例里全是业务语言,不像以前那样夹杂大量技术代码,逻辑更清晰
class PageLogin: #页面网址 URL = 'https://practicetestautomation.com/practice-test-login/' #元素定位器 USERNAME_INPUT = (By.ID, 'username') PASSWORD_INPUT = (By.ID, 'password') LOGIN_CLICK = (By.ID, 'submit') SUCCESS_FLAG = (By.XPATH, '//*[@id="loop-container"]/div/article/div[2]/div/div/div/a') #初始化driver def __init__(self, driver): self.driver = driver #进入网站 def open(self): self.driver.get(self.URL) #输入账户 def username_enter(self, username): WebDriverWait(self.driver, 5).until(EC.element_to_be_clickable(self.USERNAME_INPUT)).send_keys(username) #输入密码 def password_enter(self, password): self.driver.find_element(*self.PASSWORD_INPUT).send_keys(password) #点击登录按钮 def login_click(self): self.driver.find_element(*self.LOGIN_CLICK).click() #登录 def test_login(self,username, password): self.username_enter(username) self.password_enter(password) self.login_click() try: WebDriverWait(self.driver, 5).until(EC.element_to_be_clickable(self.SUCCESS_FLAG)) except TimeoutException: return False else: return True def get_data_from_excel(file_path): wb = openpyxl.load_workbook(file_path) sheet = wb.active data = [] for row in sheet.iter_rows(min_row=2, values_only=True): data.append(row) return data driver = webdriver.Chrome(service=Service('./chromedriver.exe')) pagelogin = PageLogin(driver) pagelogin.open() data = get_data_from_excel('testdata.xlsx') for username, password in data: result = pagelogin.test_login(username, password) if result: driver.back() print(f"username = {username},password = {password}登录成功") else: print(f"username = {username},password = {password}登录失败") input('按任意键继续...')

相关新闻

  • 天辛大师漫谈AI时代的境界修养,文科生的持续学习
  • 【Netty源码解读和权威指南】第81篇:Netty Codec框架源码解析——编解码器是如何设计的
  • FreeRTOS源码详解(十一)——Alarm

最新新闻

  • 企业内网安全数据采集方案技术探索笔记
  • Win11Debloat:3分钟完成Windows系统终极优化
  • 深入理解 Java 初始化顺序:从类加载到对象创建
  • bp如何导出证书,安装在谷歌浏览器中
  • AMD Ryzen调试工具:解锁处理器隐藏性能的终极指南
  • 斜率加一个点就可以确定直线,确定直线就可以确定方向

日新闻

  • ENVI5.3.1实战:基于Landsat 8影像的区域无缝镶嵌与精准裁剪
  • 3步完成HS2-HF Patch安装:新手快速打造完美HoneySelect2体验
  • 微信好友检测终极指南:3分钟发现谁已悄悄删除你

周新闻

  • Windows字体自定义终极方案:No!! MeiryoUI完全指南
  • Deepin Boot Maker:告别命令行,3分钟制作Linux启动盘的智能解决方案
  • Plain Craft Launcher 2:重新定义你的Minecraft游戏体验

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号