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

原文地址:https://www.cnblogs.com/4thirteen2one/p/11456690.html

时间: 2024-08-04 23:38:35

【Selenium】利用Cookies登录京东并添加商品至购物车以及结算的相关文章

电商网站中添加商品到购物车功能模块2017.12.8

前言: 电商网站中添加商品到购物车功能模块实现: 根据前一篇博客的介绍,我们看到淘宝网站为了保证购物车数据的同步,直接是强制用户必须登录才可以将商品加入购物车.而京东网站是用户在未登录的状态下也可以将商品加入到购物车,此时这个是保存在了cookie中,然后用户登录后,根据商品的id判断商品是否存在,将两个购物车的商品合并,形成最终的购物车商品. 本篇文章分两个模块,分别看下这两个功能是如何实现的: 1.必须在用户登录的前提下,才可以将商品加入到购物车列表 我们今天先看下淘宝网站的状态下的添加商品

添加商品到购物车add_to_cart.php

<?php session_start();//启动session $goods_id = $_POST['goods_id'];//获取商品id $number = $_POST['num'];//获取商品数量 if(empty($_SESSION["gwc"])) { //1.购物车是空的,第一次点击添加购物车 $arr[$goods_id] =array( 'goods_id' => $goods_id, 'num' => $number ); $_SESSIO

jQuery 特效之 添加商品到购物车

前台页面 <link href="MyCar.css" rel="stylesheet" /> <script src="../jquery.js"></script> <script> $(function () { $(".Car").click(function () { var path = $(".dh").attr("src")

贝塞尔曲线实现的购物车添加商品动画效果

效果图如下: 1.activity_main.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rly_bezier_curve_shopping_cart" android:layout_w

Vue 商城的一些小demo(后台添加商品、前台购物车、本地存储的使用)

demo   商城后台,添加一种商品 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <!-- 引入vue.js --> <script src="js/vue.js"></script> </head> <body> <div id=&

Python爬虫,京东自动登录,在线抢购商品

京东抢购Python爬虫,自动登录京东网站,查询商品库存,价格,显示购物车详情等.可以指定抢购商品,自动购买下单,然后手动去京东付款就行. chang log2017-03-30 实现二维码扫码登陆 2017-06-27 Golang版JD_AutoBuy 运行环境Python 2.7 第三方库Requests: 简单好用,功能强大的Http请求库 beautifulsoup4: HTML文档格式化及便签选择器 环境配置 1 pip install requests 2 pip install

estore商城案例(二)------登录&amp;添加商品&amp;商品列表(下)

撸完了登录模块,接着撸商品添加,和商品列表模块: 先亮出数据库: 1 DROP TABLE IF EXISTS products; 2 CREATE TABLE products ( 3 id varchar(100) NOT NULL, 4 name varchar(100) DEFAULT NULL, 5 price double DEFAULT NULL, 6 category varchar(100) DEFAULT NULL, 7 pnum int(11) DEFAULT NULL,

Selenium—通过cookies跳过验证码登录

通过cookies跳过验证码登录 现在很多的登录都需要验证,而验证相对复杂,需要花费大量的时间,那么我们就可以通过cookie,来跳过登录 cookie怎么获取 我们可以通过手动登录,来获取登录时的cookie值 通过Fiddler抓包获取cookie值 通过开发者工具--Network 中获取cookie值 以 https://www.gglott.com.cn/WXDefault.aspx?home=1 登录为例 添加cookie driver.add_cookie() 思路: 手动登录获取

利用cookies获取登录后的网页

众所周知,HTTP连接是无状态的,那么问题来了,怎么记录用户的登录信息呢?通常的做法是用户第一次发送HTTP请求时,在HTTP Server端生成一个SessionID,SessionID会对应每个会话的状态(比如是否登录,等等),并且将SessionID保存在浏览器的cookies中.我们登录一个网页后,打开另外一个窗口访问相同的网页不需要登录,就是因为两个网页都对应同一个cookies. 有时在做python爬虫时,需要访问登录后才可以访问的网页,利用已经登录的cookie文件就可以达到此目