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