测试基础笔记第十七天

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、商品上架业务

  • 能通过select下拉操作,实现下拉值自动选择
  • 在这里插入图片描述
  • 技术点:定位一组元素
  • 方法:driver.find_elements(定位策略, 表达式)
  • 结果:返回所有找到元素的一个列表,通过列表的下标进行取值操作

#导包
import time
import random
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
from tools.chromeDriver import get_driver, quit_driver
#获取浏览器并打开页面
driver = get_driver(“https://hmshop-
test.itheima.net/index.php/Admin/Admin/login”)
#页面操作
#1、商家登录
driver.find_elements(By.CLASS_NAME, “input-text”)[0].send_keys(“admin”) # ctrl
+d
driver.find_elements(By.CLASS_NAME, “input-text”)[1].send_keys(“HM_2023_test”)
driver.find_elements(By.CLASS_NAME, “input-text”)[2].send_keys(“8888”)
time.sleep(1)
driver.find_element(By.CLASS_NAME, “sub”).click()
#2、打开商品上架页面
#2.1 点击导航栏的【商城】
time.sleep(1)
#driver.find_element(By.LINK_TEXT, “商城”).click()
driver.find_element(By.PARTIAL_LINK_TEXT, “商城”).click()
#2.2 点击左侧导航栏【商品列表】
time.sleep(1)
driver.find_element(By.LINK_TEXT, “商品列表”).click()
#2.3 点击【添加商品】按钮
#元素定位失败场景1:页面存在frame嵌套,需要①先切换到指定的frame页 ② 完成页面元素定位与操作 ③
返回默认页面
time.sleep(1)
#2.3.1 切换frame窗口
driver.switch_to.frame(driver.find_element(By.ID, “workspace”))
#2.3.2 frame上元素定位与操作
driver.find_elements(By.CLASS_NAME, “add”)[0].click()
#2.3.3 返回默认页面供后续业务操作
driver.switch_to.default_content()
#3、添加商品
#① 切换页面
driver.switch_to.frame(driver.find_element(By.ID, “workspace”))
#② 页面操作
#3.1 商品名称
time.sleep(1)
driver.find_element(By.NAME, “goods_name”).send_keys(f"Jack-Test-1214-
{random.randint(101, 666)}")
#3.2 商品分类
#driver.find_element(By.ID, “cat_id”).click()
#time.sleep(2)
#driver.find_element(By.CSS_SELECTOR, “#cat_id>[value=‘7’]”).click()
#time.sleep(1)
#基于select-option下拉框 使用selenium自带的select工具类进行操作
select = Select(driver.find_element(By.ID, “cat_id”)) # 快捷导包 ctrl + alt + 空格
#select.select_by_value(“7”) # 根据value属性进行定位
#select.select_by_visible_text(“鞋、箱包、珠宝、手表”) # 根据下拉框的可见文字进行定位
select.select_by_index(1) # 根据option下标取值进行定位
#3.3 本店售价
driver.find_element(By.NAME, “shop_price”).send_keys(10)
#3.4 市场价
driver.find_element(By.NAME, “market_price”).send_keys(20)
#3.5 是否包邮
driver.find_element(By.ID, “is_free_shipping_label_1”).click()
#3.6 提交
time.sleep(1)
driver.find_element(By.LINK_TEXT, “确认提交”).click()
#③ 返回默认页面
driver.switch_to.default_content()
#退出浏览器
quit_driver(driver)

二、下单业务

  • 能通过js自动处理alert弹出窗
  • 能通过窗口截图方法保留自动化测试结果
  • 能实现多窗口自动切换
  • 下单业务:
    1、首页
    2、登录
    3、搜索
    4、浏览商品
    5、购物车
    6、提交订单
    7、支付
    8、我的订单

1.登录成功

#导包
import time
from selenium.webdriver.common.by import By
from tools.chromeDriver import get_driver, quit_driver
#下单业务
#1、打开首页
driver = get_driver(“https://hmshop-
test.itheima.net/index.php/Home/Index/index.html”)
#2、点击首页【登录】 打开登录页面
driver.find_element(By.LINK_TEXT, “登录”).click()
#3、输入账号密码完成登录成功
driver.find_element(By.ID, “username”).send_keys(“13488888888”)
driver.find_element(By.ID, “password”).send_keys(“123456”)
driver.find_element(By.ID, “verify_code”).send_keys(“8888”)
driver.find_element(By.LINK_TEXT, “登 录”).click()
time.sleep(3)
#退出浏览器
quit_driver(driver)

2.下单成功

#导包
import time
from selenium.webdriver.common.by import By
from tools.chromeDriver import get_driver, quit_driver
#下单业务
#1、打开首页
driver = get_driver(“https://hmshop-
test.itheima.net/index.php/Home/Index/index.html”)
#2、点击首页【登录】 打开登录页面
driver.find_element(By.LINK_TEXT, “登录”).click()
#3、输入账号密码完成登录成功
driver.find_element(By.ID, “username”).send_keys(“13488888888”)
driver.find_element(By.ID, “password”).send_keys(“123456”)
driver.find_element(By.ID, “verify_code”).send_keys(“8888”)
driver.find_element(By.LINK_TEXT, “登 录”).click()
time.sleep(2)
#4、点击搜索框、搜索商品
driver.find_element(By.ID, “q”).send_keys(“Jack-Test-1214”)
driver.find_element(By.LINK_TEXT, “搜索”).click()
time.sleep(2)
#5、点击商品列表中的【加入购物车】
driver.find_elements(By.LINK_TEXT, “加入购物车”)[0].click()
time.sleep(2)
#6、进入购物车 查看商品信息
#6.1 关闭弹窗界面
driver.find_element(By.CLASS_NAME, “layui-layer-setwin”).click()
time.sleep(2)
#6.2 点击页面购物车图标
driver.find_element(By.CSS_SELECTOR, “.c-n.fl”).click()
time.sleep(2)
#7、查看购物车信息并结算
driver.find_element(By.LINK_TEXT, “去结算”).click()
time.sleep(2)
#8、提交订单
driver.find_element(By.ID, “submit_order”).click()
#元素定位失败常见场景:页面元素未加载完全、导致定位失败
#解决:设置等待时间
#强制等待
#显式等待
#隐式等待
time.sleep(5)
#9、支付
driver.find_element(By.LINK_TEXT, “确认支付方式”).click()
time.sleep(2)
#打印当前页面标题信息
print(driver.title)
print(driver.current_url)
#10、点击我的订单 查看订单状态
driver.find_element(By.LINK_TEXT, “我的订单”).click()
time.sleep(2)
#切换窗口信息
#定位失败的常见场景:浏览器多窗口切换
handles = driver.window_handles # 获取所有浏览器已打开的窗口信息 (句柄)
driver.switch_to.window(handles[1]) # 使用下标处理指定的窗口
#打印当前页面的标题信息
print(driver.title)
print(driver.current_url)
#退出浏览器
quit_driver(driver)

3.获取浏览器title和url

  • 设置浏览器显示范围:窗口最大化
    语法:dirver.maxmize_window()
  • 获取浏览器信息:获取标题
    语法:dirver.title
  • 获取浏览器信息:获取标题
    语法:driver.current_urt

4.浏览器多窗口处理

在这里插入图片描述

  • 窗口切换:使用窗口的句柄来实现窗口的切换

5.窗口截图

  • 语法:

#11、截图保存当前订单页
driver.get_screenshot_as_file(“order.png”)

6.alert弹窗处理

  • 说明:能通过js自动处理alert弹出窗

需求:打开注册页面,完成以下操作:
1).点击 alert 按钮
2).关闭警告框
3).输入用户名:admin
项目:http://121.43.169.97:8848/pageA.html
在这里插入图片描述

  • 需求:打开注册页面,完成以下操作:
    1).点击 alert 按钮
    2).关闭警告框
    3).输入用户名:admin
    项目:http://121.43.169.97:8848/pageA.html

#导包
import time
from selenium.webdriver.common.by import By
from tools.chromeDriver import get_driver, quit_driver
#打开页面
driver = get_driver(“http://121.43.169.97:8848/pageA.html”)
#1).点击 alert 按钮
driver.find_element(By.ID, “alerta”).click()
time.sleep(1)
#2).关闭警告框
driver.switch_to.alert.accept()
time.sleep(1)
#3).输入用户名:admin
driver.find_element(By.ID, “userA”).send_keys(“admin”)
time.sleep(1)
#退出浏览器
quit_driver(driver)

三、其他API

1.浏览器操作

  • 能通过浏览器操作方法,实现浏览器窗口最大化、并获取浏览器标题和url信息
  • 在这里插入图片描述
  • 在这里插入图片描述

#导包
import time
from selenium.webdriver.common.by import By
from tools.chromeDriver import get_driver
#浏览器窗口最大化访问商城
driver = get_driver(“https://hmshop-
test.itheima.net/index.php/Home/Index/index.html”)
driver.maximize_window()
#获取当前页面标题及URL信息
print(driver.title)
print(driver.current_url)
print(“-” * 80)
#首页跳转至登录页并登录
driver.find_element(By.LINK_TEXT, “登录”).click()
time.sleep(1)
#获取登录成功后页面标题及URL信息
#1、登录成功
driver.find_element(By.ID, “username”).send_keys(“13488888888”)
driver.find_element(By.ID, “password”).send_keys(“123456”)
driver.find_element(By.ID, “verify_code”).send_keys(“8888”)
driver.find_element(By.NAME, “sbtbutton”).click()
time.sleep(1)
#2、获取当前页面标题及URL信息
print(driver.title)
print(driver.current_url)
print(“-” * 80)
#个人中心跳转至我的浏览页
driver.find_element(By.LINK_TEXT, “我的浏览”).click()
time.sleep(1)
#获取当前页面标题及URL信息
#多窗口切换
handles = driver.window_handles
driver.switch_to.window(handles[1])
print(driver.title)
print(driver.current_url)
print(“-” * 80)
time.sleep(2)
#关闭我的浏览页面
driver.close()
time.sleep(3)
#退出浏览器
driver.quit()

2.获取元素信息

  • 在这里插入图片描述
    在这里插入图片描述

#导包
import time
from selenium.webdriver.common.by import By
from tools.chromeDriver import get_driver传智教育-博学谷
#浏览器窗口最大化访问商城
driver = get_driver(“https://hmshop-test.itheima.net/Home/user/reg.html”)
#需求:
#1).获取手机号码输入框的大小
print(driver.find_element(By.NAME, “username”).size)
#2).获取页面上第一个span标签的文本内容
print(driver.find_elements(By.TAG_NAME, “span”)[0].text)
#3).获取页面上登录超链接的地址
print(driver.find_element(By.PARTIAL_LINK_TEXT, “登录”).get_attribute(“href”))
#4).判断页面中【用户服务协议】是否为选中状态
print(driver.find_element(By.ID, “checktxt”).is_selected())
5).判断页面中的【同意协议并注册】是否可用
print(driver.find_element(By.CSS_SELECTOR, “.regbtn.J_btn_agree”).is_enabled())
#退出浏览器
driver.quit()

3.滚动条处理

  • 说明:能控制滚动条自动滑动到指定位置
  • 在这里插入图片描述

#导包
import time
from selenium.webdriver.common.by import By
from tools.chromeDriver import get_driver
#浏览器窗口最大化访问商城
driver = get_driver(“https://hmshop-test.itheima.net/Home/Index/index.html”)
#需求:打开商城首页,完成以下操作
#1).暂停2s,控制滚动条滑动到页面最底部
time.sleep(2)
js = “window.scrollTo(0, 10000)”
driver.execute_script(js)
#2).暂停2s,控制滚动条回到顶部
time.sleep(2)
js = “window.scrollTo(0, 0)”
driver.execute_script(js)
time.sleep(2)
#退出浏览器
driver.quit()

4.鼠标操作

  • 说明:能通过鼠标操作实现首页导航商品自动选择
  • 在这里插入图片描述

#导包
import time
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from tools.chromeDriver import get_driver
#浏览器窗口最大化访问商城
driver = get_driver(“https://hmshop-test.itheima.net/Home/Index/index.html”)
#需求:打开商城首页,完成以下操作
#1).暂停2s,鼠标悬停【箱包】分类
time.sleep(2)
action = ActionChains(driver)
action.move_to_element(driver.find_element(By.LINK_TEXT, “箱包”))
action.perform()
time.sleep(2)
#2).暂停2s,查看【珠宝】分类下商品信息
driver.find_element(By.LINK_TEXT, “珠宝”).click()
time.sleep(3)
#退出浏览器
driver.quit()

5.元素等待

1.隐式等待

  • 语法:driver.implicitly_wait(timeout)
    在这里插入图片描述

#导包
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from tools.chromeDriver import get_driver
#浏览器窗口最大化访问商城
driver = get_driver(“http://121.43.169.97:8848/pageA.html”)
#需求:打开注册页面,完成以下操作
#1).最大化窗口
#2).使用隐式等待定位延时加载输入框,输入admin
#项目地址:http://121.43.169.97:8848/pageA.html
#隐式等待
driver.implicitly_wait(10)
driver.find_element(By.ID, “username”).send_keys(“admin”)
time.sleep(3)
#退出浏览器
driver.quit()

2.显式等待

  • 语法:element = WebDriverWait(driver, 10, 1).until(lambda x: x.find_element(By.ID,“username”))
    在这里插入图片描述

#导包
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from tools.chromeDriver import get_driver
#浏览器窗口最大化访问商城
driver = get_driver(“http://121.43.169.97:8848/pageA.html”)
#需求:打开注册页面,完成以下操作
#1).最大化窗口
#2).使用隐式等待定位延时加载输入框,输入admin
#项目地址:http://121.43.169.97:8848/pageA.html
#显式等待
element = WebDriverWait(driver, 10, 1).until(lambda x: x.find_element(By.ID,
“username”))
element.send_keys(“admin”)
time.sleep(3)
#退出浏览器
driver.quit()

3.二者区别

在这里插入图片描述

四、xpath定位

  • 能够通过xpath定位到页面元素
    在这里插入图片描述
  • 技术点:xpath定位
  • 策略:
    ① 路径定位:绝对路径(/html/xxx 注意:不推荐) 检查==》复制==》复制完整xpath
    相对路径(//* xxx) 检查==》复制==》复制xpath
    ② 文本定位:
    相等 //[text()=‘文字’]
    包含 //
    [contains(text(), ‘文字’)]
  • 场景:当页面元素没有基本信息时。可以继续页面显示文字通过xpath进行定位

import time
from selenium.webdriver.common.by import By
#导包
from tools.chromeDriver import get_driver, quit_driver
#打开页面
driver = get_driver(“http://120.26.52.119/”)
#页面操作
#输入账号
driver.find_element(By.XPATH, ‘//*
[@id=“app”]/div/form/div[2]/div[1]/div/div[1]/input’).send_keys(“admin”)
#输入密码
driver.find_element(By.XPATH, ‘//*
[@id=“app”]/div/form/div[2]/div[2]/div/div[1]/input’).send_keys(“HM_2023_test”)
#点击登录
driver.find_element(By.XPATH, '//[@id=“app”]/div/form/div[2]/button’).click()
time.sleep(3)
#实时展示监控页面信息
#点击监控管理
#//
[text()=‘监控管理’]
driver.find_element(By.XPATH, "//[text()=‘监控管理’]").click()
time.sleep(1)
#点击实时报警
#//
[contains(text(), ‘实时报警’)]
driver.find_element(By.XPATH, “//*[contains(text(), ‘实时报警’)]”).click()
time.sleep(2)
#退出浏览器
quit_driver(driver)

五、元素定位

1.常见元素定位方法

在这里插入图片描述

2.元素定位失败原因

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值