iphone14来了,可是约好的你去哪了

电玩女神 2024-05-11 09:05 191阅读 0赞

前言

⏲️本文阅读时长:约10分钟
?主要目标:
1.展示iphone14/iphone pro python自动化脚本 Gitee地址
2.提供有货通知订阅功能,方便老铁们接收到有货通知邮件,点击查看,收到邮件第一时间去官网下单,还是有机会的
3.更新chromedriver.exe ,本人谷歌105.0.5195.102。查看版本匹配下载请访问

https://registry.npmmirror.com/binary.html?path=chromedriver/

老规矩先水俩图

iphone14抢购自动化测试脚本
iphone14-pro/pro-max抢购自动化测试脚本
邮件有货通知立马访问

请添加图片描述
请添加图片描述
!\[在这里插入图片描述\](https://img-blog.csdnimg.cn/4428f6cdfa8f40f1a192223e6f8a69db.jpeg


前情回顾

iphone13到底香不香,真的这么难抢?

区别差异

1.地址选择处苹果官网变更了DOM结构,目前14中python脚本采用新的定位方式

  1. selectprovice = driver.find_element_by_xpath("//button[contains(text(),'山东')]")
  2. driver.execute_script("arguments[0].click();", selectprovice)

2.流程更改,14新增填写取货人姓/名及身份证后4位流程
在这里插入图片描述

3.总体比较差别不大,苹果工程师也是高端偷懒,哈哈


上代码

iphone14脚本

TIPS:本次苹果比较坑,有可能提示可以取货,但是到最后一步提示无法到店取货,请注意

  1. from selenium import webdriver
  2. from datetime import datetime
  3. from selenium.webdriver.support.select import Select
  4. import pdb
  5. import time
  6. # iphone14 自动化测试
  7. print("iphone14 自动化测试开始")
  8. # 访问测试的url定义
  9. url = "https://www.apple.com.cn/shop/buy-iphone/iphone-14"
  10. # 1. 创建浏览器对象 这里的Chrome中的变量是chromedriver的驱动地址
  11. driver = webdriver.Chrome()
  12. # 2. 跳转到apple官网
  13. driver.get(url)
  14. # 3. 隐式等待 设置 防止预售的网络的阻塞
  15. driver.implicitly_wait(10)
  16. # 4. 开始选择规格【此处我选择了-14 pro】
  17. element_sku = driver.find_element_by_name('dimensionScreensize')
  18. driver.implicitly_wait(10)
  19. element_sku.click()
  20. # 4.2 选择颜色【此处我选择了-银色】
  21. element_color = driver.find_element_by_xpath(
  22. '//*[@value="midnight"]')
  23. driver.execute_script("arguments[0].click();", element_color)
  24. driver.implicitly_wait(10)
  25. # 4.3 选择内存【此处我选择了-256g】
  26. element_memory = driver.find_element_by_xpath(
  27. '//*[@value="256gb"]')
  28. driver.execute_script("arguments[0].click();", element_memory)
  29. driver.implicitly_wait(10)
  30. # 4.4 你是否有智能手机要折抵 【此处我选择了-没有旧机折扣】
  31. element_old = driver.find_element_by_xpath('//*[@id="noTradeIn"]')
  32. driver.execute_script("arguments[0].click();", element_old)
  33. driver.implicitly_wait(10)
  34. # 4.5 Applecare 【此处我选择了-无Applecare】
  35. element_care = driver.find_element_by_id('iphonexs_ac_iup_noapplecare_label')
  36. driver.execute_script("arguments[0].click();", element_care)
  37. driver.implicitly_wait(10)
  38. # 4.6 添加到购物袋
  39. element_car = driver.find_element_by_xpath(
  40. '//*[@value="add-to-cart"]')
  41. driver.execute_script("arguments[0].click();", element_car)
  42. driver.implicitly_wait(10)
  43. # 5 页面跳转查看购物袋
  44. element_check = driver.find_element_by_xpath(
  45. '//*[@value="proceed"]')
  46. driver.execute_script("arguments[0].click();", element_check)
  47. driver.implicitly_wait(10)
  48. # 6 结账
  49. element_check_out = driver.find_element_by_xpath(
  50. '//*[@id="shoppingCart.actions.checkout"]')
  51. driver.execute_script("arguments[0].click();", element_check_out)
  52. driver.implicitly_wait(10)
  53. # 7.1 输入用户名
  54. element_username = driver.find_element_by_id(
  55. 'signIn.customerLogin.appleId')
  56. element_username.send_keys('862422xxx@qq.com')
  57. driver.implicitly_wait(10)
  58. # 7.2 输入密码
  59. element_password = driver.find_element_by_id(
  60. 'signIn.customerLogin.password')
  61. element_password.send_keys('xxx')
  62. driver.implicitly_wait(10)
  63. # 7.3 点击登录
  64. element_login = driver.find_element_by_id(
  65. 'signin-submit-button')
  66. element_login.click()
  67. driver.implicitly_wait(10)
  68. # 8.1 你希望如何收到订单商品 【此处我选择了-我要取货】
  69. element_want_order = driver.find_element_by_id(
  70. 'fulfillmentOptionButtonGroup1')
  71. driver.execute_script("arguments[0].click();", element_want_order)
  72. time.sleep(2)
  73. # 8.2 点击显示此地附近的零售店
  74. selectdistrict = driver.find_element_by_xpath(
  75. '//*[@data-autom="fulfillment-pickup-store-search-button"]')
  76. driver.execute_script("arguments[0].click();", selectdistrict)
  77. time.sleep(2)
  78. # 8.3 点击山东
  79. selectprovice = driver.find_element_by_xpath("//button[contains(text(),'山东')]")
  80. driver.execute_script("arguments[0].click();", selectprovice)
  81. time.sleep(2)
  82. # 8.4 点击青岛
  83. selectprovice = driver.find_element_by_xpath("//button[contains(text(),'青岛')]")
  84. driver.execute_script("arguments[0].click();", selectprovice)
  85. time.sleep(2)
  86. # 8.5 点击市南
  87. selectprovice = driver.find_element_by_xpath("//button[contains(text(),'市南区')]")
  88. driver.execute_script("arguments[0].click();", selectprovice)
  89. time.sleep(2)
  90. # 因为无货需要判断元素是否可以点击
  91. isOK = driver.find_element_by_xpath(
  92. '//*[@class="rt-storelocator-store-list"]/fieldset/ul/li[1]/input').is_enabled()
  93. isOKFlag = bool(1 - isOK)
  94. #print("准备isOKFlag " + str(isOKFlag))
  95. # while循环查看是否有货
  96. while isOKFlag:
  97. try:
  98. # 重新调用省市区
  99. #print("进来了isOKFlag " + str(isOKFlag))
  100. selectdistrict = driver.find_element_by_xpath('//*[@data-autom="fulfillment-pickup-store-search-button"]')
  101. driver.execute_script("arguments[0].click();", selectdistrict)
  102. time.sleep(1)
  103. selectprovice = driver.find_element_by_xpath("//button[contains(text(),'山东')]")
  104. driver.execute_script("arguments[0].click();", selectprovice)
  105. time.sleep(1)
  106. # 8.4 点击青岛
  107. selectprovice = driver.find_element_by_xpath("//button[contains(text(),'青岛')]")
  108. driver.execute_script("arguments[0].click();", selectprovice)
  109. time.sleep(1)
  110. # 8.5 点击市南
  111. selectprovice = driver.find_element_by_xpath("//button[contains(text(),'市南区')]")
  112. driver.execute_script("arguments[0].click();", selectprovice)
  113. isOK = driver.find_element_by_xpath('//*[@class="rt-storelocator-store-list"]/fieldset/ul/li[1]/input').is_enabled()
  114. isOKFlag = bool(1 - isOK)
  115. #print("最后了isOK " + str(isOKFlag))
  116. except:
  117. print("异常了 ")
  118. break
  119. # tips: 经验证,苹果官网如果在付款页面之前实体店无货,若有货后在结算页面也无法选择实体店
  120. # 8.6 选择取货零售店 【此处我选择了-Apple 青岛万象城】
  121. element_pickupTab = driver.find_element_by_xpath('//*[@class="rt-storelocator-store-list"]/fieldset/ul/li[1]/input')
  122. driver.execute_script("arguments[0].click();", element_pickupTab)
  123. driver.implicitly_wait(20)
  124. # 8.7 继续填写取货详情
  125. element_checkout = driver.find_element_by_id(
  126. 'rs-checkout-continue-button-bottom')
  127. driver.execute_script("arguments[0].click();", element_checkout)
  128. time.sleep(2)
  129. # 8.8 选择取货时间 【根据时间自己定】
  130. element_pickup_time = driver.find_element_by_xpath(
  131. '//*[@value="18"]')
  132. driver.execute_script("arguments[0].click();", element_pickup_time)
  133. time.sleep(2)
  134. # 8.9 选择取货时间段 【此处我选择了-默认第一个时间段】
  135. element_time_quantum = driver.find_element_by_xpath(
  136. '//*[@id="checkout.fulfillment.pickupTab.pickup.timeSlot.dateTimeSlots.timeSlotValue"]')
  137. Select(element_time_quantum).select_by_index(1)
  138. time.sleep(2)
  139. # 8.10 继续填写取货详情
  140. element_checkout = driver.find_element_by_id(
  141. 'rs-checkout-continue-button-bottom')
  142. driver.implicitly_wait(15)
  143. driver.execute_script("arguments[0].click();", element_checkout)
  144. element_checkout.click()
  145. driver.implicitly_wait(20)
  146. # 9.1 请填写姓氏
  147. lastName = driver.find_element_by_id(
  148. 'checkout.pickupContact.selfPickupContact.selfContact.address.lastName')
  149. lastName.send_keys('胡')
  150. driver.implicitly_wait(10)
  151. # 9.2 请填写名字
  152. firstName = driver.find_element_by_id(
  153. 'checkout.pickupContact.selfPickupContact.selfContact.address.firstName')
  154. firstName.send_keys('东旭')
  155. driver.implicitly_wait(10)
  156. # 9.3 请填写电子邮件
  157. emailAddress = driver.find_element_by_id(
  158. 'checkout.pickupContact.selfPickupContact.selfContact.address.emailAddress')
  159. emailAddress.send_keys('862422xxx@qq.com')
  160. driver.implicitly_wait(10)
  161. # 9.4 请填写手机号
  162. emailAddress = driver.find_element_by_id(
  163. 'checkout.pickupContact.selfPickupContact.selfContact.address.fullDaytimePhone')
  164. emailAddress.send_keys('1830639xxxx')
  165. driver.implicitly_wait(10)
  166. # 9.5 请填写身份证后四位
  167. nationalIdSelf = driver.find_element_by_id(
  168. 'checkout.pickupContact.selfPickupContact.nationalIdSelf.nationalIdSelf')
  169. nationalIdSelf.send_keys('403X')
  170. driver.implicitly_wait(10)
  171. # 9.6 继续选择付款方式
  172. element_checkoutPay = driver.find_element_by_id(
  173. 'rs-checkout-continue-button-bottom')
  174. driver.execute_script("arguments[0].click();", element_checkoutPay)
  175. driver.implicitly_wait(10)
  176. # 10 立即下单 【此处我选择了-微信支付】
  177. element_billingOptions = driver.find_element_by_id(
  178. 'checkout.billing.billingoptions.wechat_label')
  179. driver.execute_script("arguments[0].click();", element_billingOptions)
  180. driver.implicitly_wait(10)
  181. # 11.1 确定
  182. element_orderPay = driver.find_element_by_id(
  183. 'rs-checkout-continue-button-bottom')
  184. driver.execute_script("arguments[0].click();", element_orderPay)
  185. time.sleep(2)
  186. # 12 确认订单
  187. element_endPay = driver.find_element_by_id(
  188. 'rs-checkout-continue-button-bottom')
  189. driver.execute_script("arguments[0].click();", element_endPay)
  190. driver.implicitly_wait(15)
  191. # 11 退出浏览器
  192. time.sleep(10)
  193. # driver.quit()
  194. print("iphone14 自动化测试结束")

iphone14 pro脚本

TIPS:苹果应该有流量请求限流,会经常提示503,请注意

  1. from selenium import webdriver
  2. from datetime import datetime
  3. from selenium.webdriver.support.select import Select
  4. import pdb
  5. import time
  6. # iphone14 自动化测试
  7. print("iphone14-pro 自动化测试开始")
  8. # 访问测试的url定义
  9. url = "https://www.apple.com.cn/shop/buy-iphone/iphone-14-pro"
  10. # 1. 创建浏览器对象 这里的Chrome中的变量是chromedriver的驱动地址
  11. driver = webdriver.Chrome()
  12. # 2. 跳转到apple官网
  13. driver.get(url)
  14. # 3. 隐式等待 设置 防止预售的网络的阻塞
  15. driver.implicitly_wait(10)
  16. # 4. 开始选择规格【此处我选择了-14 pro】
  17. element_sku = driver.find_element_by_name('dimensionScreensize')
  18. driver.implicitly_wait(10)
  19. element_sku.click()
  20. # 4.2 选择颜色【此处我选择了-银色】
  21. element_color = driver.find_element_by_xpath(
  22. '//*[@value="silver"]')
  23. driver.execute_script("arguments[0].click();", element_color)
  24. driver.implicitly_wait(10)
  25. # 4.3 选择内存【此处我选择了-256g】
  26. element_memory = driver.find_element_by_xpath(
  27. '//*[@value="256gb"]')
  28. driver.execute_script("arguments[0].click();", element_memory)
  29. driver.implicitly_wait(10)
  30. # 4.4 你是否有智能手机要折抵 【此处我选择了-没有旧机折扣】
  31. element_old = driver.find_element_by_xpath('//*[@id="noTradeIn"]')
  32. driver.execute_script("arguments[0].click();", element_old)
  33. driver.implicitly_wait(10)
  34. # 4.5 Applecare 【此处我选择了-无Applecare】
  35. element_care = driver.find_element_by_id('iphonexs_ac_iup_noapplecare_label')
  36. driver.execute_script("arguments[0].click();", element_care)
  37. driver.implicitly_wait(10)
  38. # 4.6 添加到购物袋
  39. element_car = driver.find_element_by_xpath(
  40. '//*[@value="add-to-cart"]')
  41. driver.execute_script("arguments[0].click();", element_car)
  42. driver.implicitly_wait(10)
  43. # 5 页面跳转查看购物袋
  44. element_check = driver.find_element_by_xpath(
  45. '//*[@value="proceed"]')
  46. driver.execute_script("arguments[0].click();", element_check)
  47. driver.implicitly_wait(10)
  48. # 6 结账
  49. element_check_out = driver.find_element_by_xpath(
  50. '//*[@id="shoppingCart.actions.checkout"]')
  51. driver.execute_script("arguments[0].click();", element_check_out)
  52. driver.implicitly_wait(10)
  53. # 7.1 输入用户名
  54. element_username = driver.find_element_by_id(
  55. 'signIn.customerLogin.appleId')
  56. element_username.send_keys('862422xxx@qq.com')
  57. driver.implicitly_wait(10)
  58. # 7.2 输入密码
  59. element_password = driver.find_element_by_id(
  60. 'signIn.customerLogin.password')
  61. element_password.send_keys('xxxxx')
  62. driver.implicitly_wait(10)
  63. # 7.3 点击登录
  64. element_login = driver.find_element_by_id(
  65. 'signin-submit-button')
  66. element_login.click()
  67. driver.implicitly_wait(10)
  68. # 8.1 你希望如何收到订单商品 【此处我选择了-我要取货】
  69. element_want_order = driver.find_element_by_id(
  70. 'fulfillmentOptionButtonGroup1')
  71. driver.execute_script("arguments[0].click();", element_want_order)
  72. time.sleep(2)
  73. # 8.2 点击显示此地附近的零售店
  74. selectdistrict = driver.find_element_by_xpath(
  75. '//*[@data-autom="fulfillment-pickup-store-search-button"]')
  76. driver.execute_script("arguments[0].click();", selectdistrict)
  77. time.sleep(2)
  78. # 8.3 点击山东
  79. selectprovice = driver.find_element_by_xpath("//button[contains(text(),'山东')]")
  80. driver.execute_script("arguments[0].click();", selectprovice)
  81. time.sleep(2)
  82. # 8.4 点击青岛
  83. selectprovice = driver.find_element_by_xpath("//button[contains(text(),'青岛')]")
  84. driver.execute_script("arguments[0].click();", selectprovice)
  85. time.sleep(2)
  86. # 8.5 点击市南
  87. selectprovice = driver.find_element_by_xpath("//button[contains(text(),'市南区')]")
  88. driver.execute_script("arguments[0].click();", selectprovice)
  89. time.sleep(2)
  90. # 因为无货需要判断元素是否可以点击
  91. isOK = driver.find_element_by_xpath(
  92. '//*[@class="rt-storelocator-store-list"]/fieldset/ul/li[1]/input').is_enabled()
  93. isOKFlag = bool(1 - isOK)
  94. #print("准备isOKFlag " + str(isOKFlag))
  95. # while循环查看是否有货
  96. while isOKFlag:
  97. try:
  98. # 重新调用省市区
  99. #print("进来了isOKFlag " + str(isOKFlag))
  100. selectdistrict = driver.find_element_by_xpath('//*[@data-autom="fulfillment-pickup-store-search-button"]')
  101. driver.execute_script("arguments[0].click();", selectdistrict)
  102. time.sleep(1)
  103. selectprovice = driver.find_element_by_xpath("//button[contains(text(),'山东')]")
  104. driver.execute_script("arguments[0].click();", selectprovice)
  105. time.sleep(1)
  106. # 8.4 点击青岛
  107. selectprovice = driver.find_element_by_xpath("//button[contains(text(),'青岛')]")
  108. driver.execute_script("arguments[0].click();", selectprovice)
  109. time.sleep(1)
  110. # 8.5 点击市南
  111. selectprovice = driver.find_element_by_xpath("//button[contains(text(),'市南区')]")
  112. driver.execute_script("arguments[0].click();", selectprovice)
  113. isOK = driver.find_element_by_xpath('//*[@class="rt-storelocator-store-list"]/fieldset/ul/li[1]/input').is_enabled()
  114. isOKFlag = bool(1 - isOK)
  115. #print("最后了isOK " + str(isOKFlag))
  116. except:
  117. print("异常了 ")
  118. break
  119. # 8.6 选择取货零售店 【此处我选择了-Apple 青岛万象城】
  120. element_pickupTab = driver.find_element_by_xpath('//*[@class="rt-storelocator-store-list"]/fieldset/ul/li[1]/input')
  121. driver.execute_script("arguments[0].click();", element_pickupTab)
  122. driver.implicitly_wait(20)
  123. # 8.7 继续填写取货详情
  124. element_checkout = driver.find_element_by_id(
  125. 'rs-checkout-continue-button-bottom')
  126. driver.execute_script("arguments[0].click();", element_checkout)
  127. time.sleep(2)
  128. # 8.8 选择取货时间 【根据时间自己定】
  129. element_pickup_time = driver.find_element_by_xpath(
  130. '//*[@value="18"]')
  131. driver.execute_script("arguments[0].click();", element_pickup_time)
  132. time.sleep(2)
  133. # 8.9 选择取货时间段 【此处我选择了-默认第一个时间段】
  134. element_time_quantum = driver.find_element_by_xpath(
  135. '//*[@id="checkout.fulfillment.pickupTab.pickup.timeSlot.dateTimeSlots.timeSlotValue"]')
  136. Select(element_time_quantum).select_by_index(1)
  137. time.sleep(2)
  138. # 8.10 继续填写取货详情
  139. element_checkout = driver.find_element_by_id(
  140. 'rs-checkout-continue-button-bottom')
  141. driver.implicitly_wait(15)
  142. driver.execute_script("arguments[0].click();", element_checkout)
  143. element_checkout.click()
  144. driver.implicitly_wait(20)
  145. # 9.1 请填写姓氏
  146. lastName = driver.find_element_by_id(
  147. 'checkout.pickupContact.selfPickupContact.selfContact.address.lastName')
  148. lastName.send_keys('胡')
  149. driver.implicitly_wait(10)
  150. # 9.2 请填写名字
  151. firstName = driver.find_element_by_id(
  152. 'checkout.pickupContact.selfPickupContact.selfContact.address.firstName')
  153. firstName.send_keys('xx')
  154. driver.implicitly_wait(10)
  155. # 9.3 请填写电子邮件
  156. emailAddress = driver.find_element_by_id(
  157. 'checkout.pickupContact.selfPickupContact.selfContact.address.emailAddress')
  158. emailAddress.send_keys('862422xxx@qq.com')
  159. driver.implicitly_wait(10)
  160. # 9.4 请填写手机号
  161. emailAddress = driver.find_element_by_id(
  162. 'checkout.pickupContact.selfPickupContact.selfContact.address.fullDaytimePhone')
  163. emailAddress.send_keys('1830639xxxx')
  164. driver.implicitly_wait(10)
  165. # 9.5 请填写身份证后四位
  166. nationalIdSelf = driver.find_element_by_id(
  167. 'checkout.pickupContact.selfPickupContact.nationalIdSelf.nationalIdSelf')
  168. nationalIdSelf.send_keys('403X')
  169. driver.implicitly_wait(10)
  170. # 9.6 继续选择付款方式
  171. element_checkoutPay = driver.find_element_by_id(
  172. 'rs-checkout-continue-button-bottom')
  173. driver.execute_script("arguments[0].click();", element_checkoutPay)
  174. driver.implicitly_wait(10)
  175. # 10 立即下单 【此处我选择了-微信支付】
  176. element_billingOptions = driver.find_element_by_id(
  177. 'checkout.billing.billingoptions.wechat_label')
  178. driver.execute_script("arguments[0].click();", element_billingOptions)
  179. driver.implicitly_wait(10)
  180. # 11.1 确定
  181. element_orderPay = driver.find_element_by_id(
  182. 'rs-checkout-continue-button-bottom')
  183. driver.execute_script("arguments[0].click();", element_orderPay)
  184. time.sleep(2)
  185. # 12 确认订单
  186. element_endPay = driver.find_element_by_id(
  187. 'rs-checkout-continue-button-bottom')
  188. driver.execute_script("arguments[0].click();", element_endPay)
  189. driver.implicitly_wait(15)
  190. # 11 退出浏览器
  191. time.sleep(10)
  192. # driver.quit()
  193. print("iphone14-pro 自动化测试结束")

iphone14 pro-max脚本

  1. from selenium import webdriver
  2. from datetime import datetime
  3. from selenium.webdriver.support.select import Select
  4. import pdb
  5. import time
  6. # iphone14 自动化测试
  7. print("iphone14-pro-max 自动化测试开始")
  8. # 访问测试的url定义
  9. url = "https://www.apple.com.cn/shop/buy-iphone/iphone-14-pro"
  10. # 1. 创建浏览器对象 这里的Chrome中的变量是chromedriver的驱动地址
  11. driver = webdriver.Chrome()
  12. # 2. 跳转到apple官网
  13. driver.get(url)
  14. # 3. 隐式等待 设置 防止预售的网络的阻塞
  15. driver.implicitly_wait(10)
  16. # 4. 开始选择规格【此处我选择了-14 pro-max】
  17. element_sku = driver.find_element_by_xpath(
  18. '//*[@value="6_7inch"]')
  19. driver.execute_script("arguments[0].click();", element_sku)
  20. # 4.2 选择颜色【此处我选择了-银色】
  21. element_color = driver.find_element_by_xpath(
  22. '//*[@value="silver"]')
  23. driver.execute_script("arguments[0].click();", element_color)
  24. driver.implicitly_wait(10)
  25. # 4.3 选择内存【此处我选择了-256g】
  26. element_memory = driver.find_element_by_xpath(
  27. '//*[@value="256gb"]')
  28. driver.execute_script("arguments[0].click();", element_memory)
  29. driver.implicitly_wait(10)
  30. # 4.4 你是否有智能手机要折抵 【此处我选择了-没有旧机折扣】
  31. element_old = driver.find_element_by_xpath('//*[@id="noTradeIn_label"]')
  32. driver.execute_script("arguments[0].click();", element_old)
  33. driver.implicitly_wait(10)
  34. # 4.5 Applecare 【此处我选择了-无Applecare】
  35. element_care = driver.find_element_by_id('iphone11promax_ac_iup_noapplecare_label')
  36. driver.execute_script("arguments[0].click();", element_care)
  37. driver.implicitly_wait(10)
  38. # 4.6 添加到购物袋
  39. element_car = driver.find_element_by_xpath(
  40. '//*[@value="add-to-cart"]')
  41. driver.execute_script("arguments[0].click();", element_car)
  42. driver.implicitly_wait(10)
  43. # 5 页面跳转查看购物袋
  44. element_check = driver.find_element_by_xpath(
  45. '//*[@value="proceed"]')
  46. driver.execute_script("arguments[0].click();", element_check)
  47. driver.implicitly_wait(10)
  48. # 6 结账
  49. element_check_out = driver.find_element_by_xpath(
  50. '//*[@id="shoppingCart.actions.checkout"]')
  51. driver.execute_script("arguments[0].click();", element_check_out)
  52. driver.implicitly_wait(10)
  53. # 7.1 输入用户名
  54. element_username = driver.find_element_by_id(
  55. 'signIn.customerLogin.appleId')
  56. element_username.send_keys('xxx@qq.com')
  57. driver.implicitly_wait(10)
  58. # 7.2 输入密码
  59. element_password = driver.find_element_by_id(
  60. 'signIn.customerLogin.password')
  61. element_password.send_keys('xxx')
  62. driver.implicitly_wait(10)
  63. # 7.3 点击登录
  64. element_login = driver.find_element_by_id(
  65. 'signin-submit-button')
  66. element_login.click()
  67. driver.implicitly_wait(10)
  68. # 8.1 你希望如何收到订单商品 【此处我选择了-我要取货】
  69. element_want_order = driver.find_element_by_id(
  70. 'fulfillmentOptionButtonGroup1')
  71. driver.execute_script("arguments[0].click();", element_want_order)
  72. time.sleep(2)
  73. # 8.2 点击显示此地附近的零售店
  74. selectdistrict = driver.find_element_by_xpath(
  75. '//*[@data-autom="fulfillment-pickup-store-search-button"]')
  76. driver.execute_script("arguments[0].click();", selectdistrict)
  77. time.sleep(2)
  78. # 8.3 点击山东
  79. selectprovice = driver.find_element_by_xpath("//button[contains(text(),'山东')]")
  80. driver.execute_script("arguments[0].click();", selectprovice)
  81. time.sleep(2)
  82. # 8.4 点击青岛
  83. selectprovice = driver.find_element_by_xpath("//button[contains(text(),'青岛')]")
  84. driver.execute_script("arguments[0].click();", selectprovice)
  85. time.sleep(2)
  86. # 8.5 点击市南
  87. selectprovice = driver.find_element_by_xpath("//button[contains(text(),'市南区')]")
  88. driver.execute_script("arguments[0].click();", selectprovice)
  89. time.sleep(2)
  90. # 因为无货需要判断元素是否可以点击
  91. isOK = driver.find_element_by_xpath(
  92. '//*[@class="rt-storelocator-store-list"]/fieldset/ul/li[1]/input').is_enabled()
  93. isOKFlag = bool(1 - isOK)
  94. #print("准备isOKFlag " + str(isOKFlag))
  95. # while循环查看是否有货
  96. while isOKFlag:
  97. try:
  98. # 重新调用省市区
  99. #print("进来了isOKFlag " + str(isOKFlag))
  100. selectdistrict = driver.find_element_by_xpath('//*[@data-autom="fulfillment-pickup-store-search-button"]')
  101. driver.execute_script("arguments[0].click();", selectdistrict)
  102. time.sleep(1)
  103. selectprovice = driver.find_element_by_xpath("//button[contains(text(),'山东')]")
  104. driver.execute_script("arguments[0].click();", selectprovice)
  105. time.sleep(1)
  106. # 8.4 点击青岛
  107. selectprovice = driver.find_element_by_xpath("//button[contains(text(),'青岛')]")
  108. driver.execute_script("arguments[0].click();", selectprovice)
  109. time.sleep(1)
  110. # 8.5 点击市南
  111. selectprovice = driver.find_element_by_xpath("//button[contains(text(),'市南区')]")
  112. driver.execute_script("arguments[0].click();", selectprovice)
  113. isOK = driver.find_element_by_xpath('//*[@class="rt-storelocator-store-list"]/fieldset/ul/li[1]/input').is_enabled()
  114. isOKFlag = bool(1 - isOK)
  115. #print("最后了isOK " + str(isOKFlag))
  116. except:
  117. print("异常了 ")
  118. break
  119. # 8.6 选择取货零售店 【此处我选择了-Apple 青岛万象城】
  120. element_pickupTab = driver.find_element_by_xpath('//*[@class="rt-storelocator-store-list"]/fieldset/ul/li[1]/input')
  121. driver.execute_script("arguments[0].click();", element_pickupTab)
  122. driver.implicitly_wait(20)
  123. # 8.7 继续填写取货详情
  124. element_checkout = driver.find_element_by_id(
  125. 'rs-checkout-continue-button-bottom')
  126. driver.execute_script("arguments[0].click();", element_checkout)
  127. time.sleep(2)
  128. # 8.8 选择取货时间 【根据时间自己定】
  129. element_pickup_time = driver.find_element_by_xpath(
  130. '//*[@value="18"]')
  131. driver.execute_script("arguments[0].click();", element_pickup_time)
  132. time.sleep(2)
  133. # 8.9 选择取货时间段 【此处我选择了-默认第一个时间段】
  134. element_time_quantum = driver.find_element_by_xpath(
  135. '//*[@id="checkout.fulfillment.pickupTab.pickup.timeSlot.dateTimeSlots.timeSlotValue"]')
  136. Select(element_time_quantum).select_by_index(1)
  137. time.sleep(2)
  138. # 8.10 继续填写取货详情
  139. element_checkout = driver.find_element_by_id(
  140. 'rs-checkout-continue-button-bottom')
  141. driver.implicitly_wait(15)
  142. driver.execute_script("arguments[0].click();", element_checkout)
  143. element_checkout.click()
  144. driver.implicitly_wait(20)
  145. # 9.1 请填写姓氏
  146. lastName = driver.find_element_by_id(
  147. 'checkout.pickupContact.selfPickupContact.selfContact.address.lastName')
  148. lastName.send_keys('胡')
  149. driver.implicitly_wait(10)
  150. # 9.2 请填写名字
  151. firstName = driver.find_element_by_id(
  152. 'checkout.pickupContact.selfPickupContact.selfContact.address.firstName')
  153. firstName.send_keys('东旭')
  154. driver.implicitly_wait(10)
  155. # 9.3 请填写电子邮件
  156. emailAddress = driver.find_element_by_id(
  157. 'checkout.pickupContact.selfPickupContact.selfContact.address.emailAddress')
  158. emailAddress.send_keys('862422627@qq.com')
  159. driver.implicitly_wait(10)
  160. # 9.4 请填写手机号
  161. emailAddress = driver.find_element_by_id(
  162. 'checkout.pickupContact.selfPickupContact.selfContact.address.fullDaytimePhone')
  163. emailAddress.send_keys('18306390693')
  164. driver.implicitly_wait(10)
  165. # 9.5 请填写身份证后四位
  166. nationalIdSelf = driver.find_element_by_id(
  167. 'checkout.pickupContact.selfPickupContact.nationalIdSelf.nationalIdSelf')
  168. nationalIdSelf.send_keys('403X')
  169. driver.implicitly_wait(10)
  170. # 9.6 继续选择付款方式
  171. element_checkoutPay = driver.find_element_by_id(
  172. 'rs-checkout-continue-button-bottom')
  173. driver.execute_script("arguments[0].click();", element_checkoutPay)
  174. driver.implicitly_wait(10)
  175. # 10 立即下单 【此处我选择了-微信支付】
  176. element_billingOptions = driver.find_element_by_id(
  177. 'checkout.billing.billingoptions.wechat_label')
  178. driver.execute_script("arguments[0].click();", element_billingOptions)
  179. driver.implicitly_wait(10)
  180. # 11.1 确定
  181. element_orderPay = driver.find_element_by_id(
  182. 'rs-checkout-continue-button-bottom')
  183. driver.execute_script("arguments[0].click();", element_orderPay)
  184. time.sleep(2)
  185. # 12 确认订单
  186. element_endPay = driver.find_element_by_id(
  187. 'rs-checkout-continue-button-bottom')
  188. driver.execute_script("arguments[0].click();", element_endPay)
  189. driver.implicitly_wait(15)
  190. # 11 退出浏览器
  191. time.sleep(10)
  192. # driver.quit()
  193. print("iphone14-pro 自动化测试结束")
订阅有货通知

为了更便于大家进行抢购,特提供邮箱订阅有货功能
在这里插入图片描述

作用

1.本狗已将14 pro/max所有型号扒下,大家可以选择心怡的产品进行订阅。
2.服务器会24小时不间断调用苹果接口,实时监控有货,一旦有货立马通知订阅邮箱

地址

http://apple.javadog.net/apple/v1/

操作

1.测试邮箱是否可以接受邮件,输入自己邮箱,点击发送,记得不要忽略加入黑名单
在这里插入图片描述

2.选择自己心仪型号及取货位置,并录入自己接受邮件的邮箱即可,如有货即可推送邮件
在这里插入图片描述

3.接到邮件手速快的同学,机会很大呦
在这里插入图片描述

总结

希望大家理性使用及购买,本人也当娱乐学习,拖更也真诚的跟大家道个歉,希望大家可去踩踩我的狗窝?

发表评论

表情:
评论列表 (有 0 条评论,191人围观)

还没有评论,来说两句吧...

相关阅读

    相关 35+互联网人都

    最近,经常被问到这样的问题,比如这样的: > 杭哥好,目前在头条实习,发现周围真的几乎没有35+员工,那互联网大部分的35+员工都去哪了呢?以及怎么看待有一些关于35的言论总

    相关 618优惠券

    618刚刚过去,各大商家和平台都推出了各种优惠,但作为普通消费者的我们似乎感觉被“套路”了。各种限量优惠券秒没,难道真的是我手速慢?其实限量优惠券,早就被偷走了,这背后,有一个

    相关 时间都

    门前老树长新芽 院里枯木又开花 半生存了好多话 藏进了满头白发 记忆中的小脚丫 肉嘟嘟的小嘴巴 一生把爱交给他 只为那一声爸妈 时间都去哪儿了