三种等待

课后作业: 添加商品到购物车流程的自动化实现。商品推荐使用iPhone 6 plus的手机商品来实现流程
1 # 课后作业:
2 # 1. 添加商品到购物车流程的自动化实现。商品推荐使用iPhone 6 plus的手机商品来实现流程
3 # 定位到搜索框,搜索iPhone 6 plus
4 from time import sleep
5
6 from selenium import webdriver
7
8 # 获取浏览器驱动
9 from selenium.webdriver.support.wait import WebDriverWait
10
11 driver=webdriver.Chrome()
12 #访问商城的url
13
14 driver.get('http://39.98.138.157/shopxo/index.php')
15 #浏览器最大化
16 driver.maximize_window()
17 driver.implicitly_wait(10)
18
19
20 def login():
21 #点击登录,进入登录页面
22 driver.find_element('xpath','//div[@class="menu-hd"]/a[text()="登录"]').click()
23 sleep(2)
24 #输入用户名
25 driver.find_element('xpath','//input[@name="accounts"]').send_keys('18700000000')
26 #输入密码
27 driver.find_element('xpath','//input[@name="pwd"]').send_keys('18700000000')
28 #点击登录按钮
29 driver.find_element('xpath','//button[text()="登录"]').click()
30 WebDriverWait(driver,10,0.5).until(
31 lambda el:driver.find_element('xpath','//p[text()="登录成功"]'),message='登录失败'
32 )
33 def AddToCart():
34 #点击搜索框
35 driver.find_element('id','search-input').click()
36 #在搜索框中输入iPhone 6 plus
37 driver.find_element('id','search-input').send_keys('iPhone 6 plus')
38 #点击搜索按钮
39 driver.find_element('id','ai-topsearch').click()
40 #点击手机图标
41 driver.find_element('xpath','//p[text()="苹果(Apple)iPhone 6 Plus (A1524)移动联通电信4G手机 金色 16G"]').click()
42 print(driver.title)
43 #获取到所有句柄
44 hds=driver.window_handles
45 # 切换句柄
46 driver.switch_to.window(hds[1])
47 print(driver.title)
48 #选择套餐
49 driver.find_element('xpath','//li[@data-value="套餐一"]').click()
50 sleep(2)
51 #选择颜色
52 driver.find_element('xpath','//li[@data-value="银色"]').click()
53 sleep(2)
54 #选择容量
55 driver.find_element('xpath','//li[@data-value="32G"]').click()
56 #设置数量
57 driver.find_element('xpath','//input[@type="number"]').clear()
58 driver.find_element('xpath','//input[@type="number"]').send_keys(2)
59 # 点击加入购物车
60 driver.find_element('xpath','//button[@title="加入购物车"]').click()
61 #判断是否加入购物车成功 //p[text()="加入成功"]
62
63 WebDriverWait(driver,10,0.5).until(
64 lambda el:driver.find_element('xpath','//p[text()="加入成功"]'),message='加入失败'
65 )
66 #调用登录方法
67 login()
68 #调用加入购物车的方法
69 AddToCart()