from selenium import webdriver
from time import sleep
from selenium.webdriver.support.ui import WebDriverWait
'''
1.了解流程运行:
登录--搜索商品--进入商品详情--添加商品属性--添加购物车--购物车检查
2.了解实际编写时注意的内容
'''
# 初始设置
# 创建Chromeoptions对象
options=webdriver.ChromeOptions()
# 窗体最大化
options.add_argument('start-maximized')
# # 无头模式:启动浏览器进程,但不会显示出来
# options.add_argument('--headless')
# 创建Chrome对象
driver=webdriver.Chrome(options=options)
# 设置隐式等待,作用于整个driver
driver.implicitly_wait(10)
# 生成显示等待对象
wait=WebDriverWait(driver,10,0.5)
# 操作流程
# 访问url
driver.get('http://39.98.138.157/shopxo/index.php')
# 登录流程
driver.find_element_by_xpath('//a[text()="登录"]').click()
driver.find_element_by_name("accounts").send_keys('666666')
driver.find_element_by_name("pwd").send_keys('111111')
driver.find_element_by_xpath(
'/html/body/div[4]/div/div[2]/div[2]/form/div[3]/button').click()
# 判断登录是否成功
wait.until(lambda el:driver.find_element_by_xpath('//a[text()="退出"]'),message='登录失败')
# try:
# # 显示等待,until成功则不输出message的信息,until失败则输出message
# # WebDriverWait(driver, 10, 0.5).until
# wait.until(
# lambda el:driver.find_element_by_xpath(
# '//a[text()="退出"]'),message='登录失败'
# )
# except Exception as e: #抛出异常
# print('登录失败,信息不正确:'.format(e))
# 搜索商品
driver.find_element_by_name('wd').send_keys('手机')
driver.find_element_by_id('ai-topsearch').click()
# 进入商品详情
sleep(3)
# driver.find_element_by_xpath('//p[contains(text(),"iPhone 6 Plus ")]').click()
# driver.find_element_by_xpath(
# '/html/body/div[4]/div/ul/li[1]/div/a/img').click()
# 判断进入商品详情是否成功
cellphone = wait.until(lambda el:driver.find_element_by_xpath(
'//p[contains(text(),"iPhone 6 Plus ")]'))
name = cellphone.text
print(name)
cellphone.click()
# 切换句柄
handles=driver.window_handles
# print(handles)
# 关闭之前的句柄页
driver.close()
#切换页面就是切换句柄:切换handles的时候,尽可能保障最低只有两个页面
driver.switch_to.window(handles[1])
# 添加商品属性
# wait.until(lambda el:driver.find_element_by_xpath('//*[@data-value="套餐一"]')).click()
# wait.until(lambda el:driver.find_element_by_xpath('//*[@data-value="金色"]')).click()
# wait.until(lambda el:driver.find_element_by_xpath('//*[@data-value="64G"]')).click()
sleep(5)
driver.find_element_by_xpath('//*[@data-value="套餐一"]').click()
sleep(2)
driver.find_element_by_xpath('//*[@data-value="金色"]').click()
sleep(2)
driver.find_element_by_xpath('//*[@data-value="64G"]').click()
sleep(2)
# driver.find_element_by_id('text_box').clear()
driver.find_element_by_xpath('//*[@type="number"]').clear()
driver.find_element_by_xpath('//*[@type="number"]').send_keys(5)
# driver.find_element_by_id('text_box').send_keys('5')
# 加入购物车
sleep(2)
driver.find_element_by_xpath(
'//*[text()="加入购物车"]').click()
# 检查是否加入成功
text=wait.until(lambda el:driver.find_element_by_xpath('//*[text()="加入成功"]')).text
print(text)
# 进入检查购物车
driver.find_element_by_xpath('//*[text()="购物车"]').click()
# 检查商品是否存在于购物车中
sleep(5)
# name1 = driver.find_element_by_xpath('//*[contains(text(),"iPhone 6 Plus")]').text
name1=driver.find_element_by_xpath('//*[contains(text(),"iPhone 6 Plus ")]').text
print(name1)
if name==name1:
print('添加成功')
else:
pass
# assert name == name1
sleep(10)
driver.quit()