import json
import unittest
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
def get_JD_cookies():
browser = webdriver.Firefox()
browser.maximize_window()
browser.implicitly_wait(2)
url = "https://www.jd.com"
browser.get(url)
# 登陸前
before_login = browser.get_cookies()
# 定位,點擊“請登錄”
browser.find_element_by_class_name("link-login").click()
# browser.find_element_by_class_name("link-logout").click()
sleep(5)
# 定位,點擊“賬戶登錄”
browser.find_element_by_link_text("賬戶登錄").click()
sleep(5)
# 定位,輸入賬號
username = browser.find_element_by_id("loginname")
username.clear()
username.send_keys(input("用戶名:"))
# 定位,輸入密碼
password = browser.find_element_by_id("nloginpwd")
password.clear()
password.send_keys(input("密碼:"))
sleep(5)
# 定位,點擊登錄
browser.find_element_by_id("loginsubmit").click()
sleep(20)
# 人機驗證
# whole = browser.find_element_by_class_name("JDJRV-bigimg")
# piece = browser.find_element_by_class_name("JDJRV-smallimg")
# slider = browser.find_element_by_class_name("JDJRV-slide-inner JDJRV-slide-btn")
# 登陸后
after_login = browser.get_cookies()
# 獲取 cookies
cookies = browser.get_cookies()
# 將 cookies 寫入文件
with open("cookies.txt","w") as f:
json.dump(cookies, f)
class JDBuy(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("setUpClass被執行")
@classmethod
def tearDownClass(cls):
print("tearDownClass被執行")
def setUp(self):
print("Begin testing...")
self.browser = webdriver.Firefox()
self.url = "https://www.jd.com"
self.browser.maximize_window()
self.browser.implicitly_wait(2)
# 訪問網站,清空舊cookies信息
self.browser.get(self.url)
sleep(5)
self.browser.delete_all_cookies()
# 加載 cookies信息
with open("cookies.txt","r") as f:
cookies = json.load(f)
for cookie in cookies:
self.browser.add_cookie(cookie)
# 驗證是否登錄成功
self.browser.get(self.url)
def tearDown(self):
print("End testing...")
self.browser.quit()
def testAdd2Cart(self):
browser = self.browser
# 定位搜索框 輸入 "iPhone"
browser.find_element_by_id("key").send_keys("iPhone")
browser.find_element_by_id("key").send_keys(Keys.RETURN)
# browser.find_element_by_xpath("//button[@class='button']/i").click()
# 定位 點擊搜索按鈕
sleep(5)
browser.find_element_by_class_name("gl-item").click()
sleep(5)
nwh = browser.window_handles[-1]
browser.switch_to.window(nwh)
browser.find_element_by_id("InitCartUrl").click()
sleep(5)
self.assertIn("商品已成功加入購物車", browser.title)
# assert "商品已成功加入購物車" in browser.title
def testBilling(self):
browser = self.browser
# 打開購物車
browser.find_element_by_xpath("//div[@class='cw-icon']/a").click()
sleep(5)
nwh = browser.window_handles[-1]
browser.switch_to.window(nwh)
browser.find_element_by_link_text("去結算").click()
sleep(5)
self.assertIn("訂單結算頁", browser.title)
sleep(2)
browser.find_element_by_id("order-submit").click()
sleep(2)
self.assertIn("收銀台", browser.title)
if __name__ == "__main__":
# get_JD_cookies()
unittest.main()