【Selenium】利用Cookies登錄京東並添加商品至購物車以及結算


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM