云辞
发布于 2026-03-22 / 25 阅读
0

DSMall 实训案例

任务要求(参考详细要求说明)
1.打开网站首页 http://localhost/index.php/home
2.点击登陆页面,输入账号、密码、验证码,点击登陆
3.点击用户中心->收货地址->新增地址 填写新地址信息并设置为默认地址
4.定位搜索框 -> 输入“手机” 点击搜索
5.选择第二个手机产品 “点击进入详情”
6.设置购买数量为2,点击加入购物车
7.进入购物车结算
8.下一步,填写核对购物信息
9.点击使用预存款
10.设置支付密码 888888
11.点击使用
12.提交订单
13.结束

from captcha import init_browser
from captcha import get_captcha_code
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
import time

# 初始化浏览器
driver = init_browser()
# 窗口最大化
driver.maximize_window()

# 1.打开网站首页 http://localhost:81/
driver.get('http://localhos1:81/')

# 设置隐式等待:在查找任何元素时,如果没找到,最多等待10秒
driver.implicitly_wait(10)
# 关闭弹窗广告
driver.find_element(By.CLASS_NAME, 'close-fixed-suspension').click()

# 2.点击登陆页面,输入账号、密码、验证码,点击登陆
driver.find_element(By.LINK_TEXT, '请登录').click()
def login():
    # 用户名/手机号
    driver.find_element(By.ID, 'member_name').clear()
    driver.find_element(By.ID, 'member_name').send_keys('admin')
    # 密码
    driver.find_element(By.ID, 'member_password').clear()
    driver.find_element(By.ID, 'member_password').send_keys('123456')
    # 验证码
    driver.find_element(By.ID, 'captcha_normal').clear()
    captcha_code = get_captcha_code(driver, (By.ID, 'codeimage'))
    driver.find_element(By.ID, 'captcha_normal').send_keys(captcha_code)
    # 点击登录
    driver.find_element(By.XPATH, "//input[@type='submit']").click()
# 判断当前 URL 中是否包含'Member'字符串,如果包含说明登录成功跳转到了用户中心
if 'Member' in driver.current_url:
    print('登录成功')
# 如果不包含Member,则说明登录失败,添加登录重试机制,一共尝试5次
else:
    print('登录失败,开始尝试重新登录')
    for i in range(5):
        login()
        time.sleep(3)
        # 判断当前 URL 中是否包含'Member'字符串,如果包含说明登录成功跳转到了用户中心
        if 'Member' in driver.current_url:
            print('登录成功')
            break
        # 如果登录失败,则输出登录失败信息
        else:
            print('登录失败,开始尝试重新登录')

# 3.点击用户中心->收货地址->新增地址  填写新地址信息并设置为默认地址
# 点击“收货地址”
driver.find_element(By.LINK_TEXT, '收货地址').click()
# 点击“新增地址”
driver.find_element(By.LINK_TEXT, '新增地址').click()
# 收货人姓名
driver.find_element(By.NAME, 'true_name').send_keys('张三')
# 省份
province = Select(driver.find_element(By.ID, 'provinceSelect'))
province.select_by_visible_text('江西省')
# 城市
city = Select(driver.find_element(By.ID, 'citySelect'))
city.select_by_value('南昌市')
# 区/县
area = Select(driver.find_element(By.ID, 'areaSelect'))
area.select_by_index(4)
# 详细地址
driver.find_element(By.NAME, 'address').send_keys('东湖大道')
# 电话号码
driver.find_element(By.NAME, 'tel_phone').send_keys('0791-12345678')
# 手机号码
driver.find_element(By.NAME, 'mob_phone').send_keys('13700000000')
# 勾选设置为默认地址
driver.find_element(By.NAME, 'is_default').click()
# 点击提交
driver.find_element(By.XPATH, "//input[@value='提交']").click()

# 4.定位搜索框 -> 输入“手机” 点击搜索
driver.find_element(By.NAME, 'keyword').send_keys('手机')
driver.find_element(By.XPATH, "//input[@value='搜索']").click()

# 5.选择第二个手机产品 “点击进入详情”
time.sleep(3)
driver.find_elements(By.XPATH, '//div[@class="squares"]/ul/li[2]')[0].click()

# 6.设置购买数量为2,点击加入购物车


input()