webdriver实操

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()

 

posted @ 2020-09-24 15:56  cy583  阅读(139)  评论(0编辑  收藏  举报