import json
from time import sleep
from selenium import webdriver
import chardet
from selenium.webdriver import ActionChains #初始化浏览器
# driver = webdriver.Chrome(executable_path = "e:\\chromedriver")
driver = webdriver.Firefox(executable_path = "e:\\geckodriver")
# driver = webdriver.Ie(executable_path = "e:\\IEDriverServer") #定义全局遍变量url
url = "https://www.jd.com" def login_cookie():
#打开浏览器
driver.get(url)
# 浏览器最大化
driver.maximize_window()
#定位登录button
driver.find_element_by_xpath('//a[@class = "link-login"]').click()
#定位账户登录
driver.find_element_by_xpath('//a[text()="账户登录"]').click()
#定位账号框,并输入账号
driver.find_element_by_xpath('//input[@name="loginname"]').send_keys("")
#定位密码框,并输入密码
driver.find_element_by_xpath('//input[@type="password"]').send_keys("GaoXXX")
#点击登录button
driver.find_element_by_xpath('//a[@id="loginsubmit"]').click()
sleep(10)
#需要手动滑动图片,通过校验 #获取cookie
my_cookie = driver.get_cookies()
print(my_cookie)
data_cookie = json.dumps(my_cookie)
with open("jd_coolies","w") as fp:
fp.write(data_cookie) #使用cookies
def get_url_with_cookies():
# 访问网站,清空旧cookies信息
driver.get(url)
driver.delete_all_cookies()
#获取cookies文件
with open("jd_coolies","r") as fp:
jd_cookies = fp.read()
#加载cookies信息
jd_cookies_dict = json.loads(jd_cookies)
for cookie in jd_cookies_dict:
driver.add_cookie(cookie)
#验证是否登录成功
driver.get(url)
assert '退出' in driver.page_source
print(url) # 添加购物车
def shopping():
driver.get('https://www.jd.com/')
# 定位搜索框,并输入:Python自动化
driver.find_element_by_xpath("//input[@clstag='h|keycount|head|search_c']").send_keys('Python自动化')
# 定位“搜索”button,并点击
driver.find_element_by_xpath('//button[@clstag="h|keycount|head|search_a"]/i').click()
# 获取当前窗口句柄
now_handle = driver.current_window_handle
# 打印当前窗口句柄
print("添加购物车窗口")
print(now_handle) #判断 不是 当前窗口句柄
# 获取所有窗口句柄
all_handles = driver.window_handles
# 循环遍历所有新打开的窗口句柄,也就是说不包括主窗口
for handle in all_handles:
if handle != now_handle:
# 切换窗口
driver.switch_to.window(handle)
sleep(5)
# 点击加入购物车
driver.find_element_by_xpath("//div[@class='itemInfo-wrap']/div/div/a[contains(@onclick,'加入购物车')]").click()
# 调用driver的page_source属性获取页面源码
pageSource = driver.page_source
# 断言页面源码中是否包含“商品已成功加入购物车”关键字,以此判断页面内容是否正确
assert "商品已成功加入购物车" in pageSource
print("商品已成功加入购物车") def payOrder():
# # 获取当前窗口句柄
current_handle = driver.current_window_handle
# 打印当前窗口句柄
print(current_handle)
print("点击购物车")
# 点击“我的购物车”
driver.find_element_by_xpath("//a[text()='我的购物车']").click()
sleep(2)
all_handles = driver.window_handles
# 循环遍历所有新打开的窗口句柄,也就是说不包括主窗口
for handle in all_handles:
if handle != current_handle:
# 切换窗口
driver.switch_to.window(handle)
sleep(5)
# 点击“去结算”button
driver.find_element_by_xpath("//div[@id='cart-floatbar']/div/div/div/div[2]/div[4]/div[1]/div/div[1]").click()
# driver.find_element_by_xpath("//a[contains(text(),'去结算')]").click()
sleep(2)
# 点击“提交订单”button
driver.find_element_by_xpath("//button[@id='order-submit']").click()
# 调用driver的page_source属性获取页面源码
pageSource = driver.page_source
# 断言页面源码中是否包含“商品已成功加入购物车”关键字,以此判断页面内容是否正确
assert "订单提交成功,请尽快付款" in pageSource if __name__=="__main__":
login_cookie()
get_url_with_cookies()
shopping()
payOrder()

python+selenium实现经京东登录+购物+支付的更多相关文章

  1. python+selenium自动化禅道登录测试

    本文以禅道登录测试为例,思路主要分openBrowser.openUrl.findElement.sendVals.checkResult.ReadUserdate六部分 openBrowser de ...

  2. 4、python+selenium实现12306模拟登录

    简介: 这里是利用了selenium+图片识别验证,来实现12306的模拟登录,中间也参考了好几个项目,实现了这个小demo,中间也遇到了很多的坑,主要难点在于图片识别和滑动验证这两个方面,图片识别是 ...

  3. python+selenium+chrome实现自动登录百度

    #python3.4+selenium3.5+chrome版本 63.0.3239.132+chrome驱动chromedriver.exe #实现自动登录百度 from selenium impor ...

  4. python selenium chrome 实现自动化登录

    1.环境安装 selenium的开发文档网址(英语好的可以直接看这个,写的很详细):http://selenium-python.readthedocs.io/ 因为实现的时候使用的是谷歌浏览器,在运 ...

  5. Python+Selenium - windows安全中心的弹窗(账号登录)

    当出现如下图所示的 Windows安全中心弹窗,需要输入用户名和密码时 如何用Python+selenium跳过这个登录. 步骤: 1.在注册表中三个位置各添加两个东西:iexplore.exe 和 ...

  6. python+selenium模拟京东登录后台

    python+selenium模拟京东登录后台 import json from time import sleep from selenium import webdriver #from sele ...

  7. 一次完整的自动化登录测试-基于python+selenium进行cnblog的自动化登录测试

    Web登录测试是很常见的测试!手动测试大家再熟悉不过了,那如何进行自动化登录测试呢!本文作者就用python+selenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动 ...

  8. Python + Selenium 实现登录Office 365

    最近捡起之前用的Python + Selenium实现工作中需要的登录Office 365功能.(吐槽:国内网络真是卡,登录Office 365实属不易.另外Selenium这样的网站都要墙,无法理解 ...

  9. selenium+python自动化测试系列(一):登录

        最近接手商城的项目,针对后台测试,功能比较简单,但是流程比较繁多,涉及到前后台的交叉测试.在对整个项目进行第一轮测试完成之后,考虑以后回归测试任务比较重,为了减轻回归测试的工作量,所以考虑后台 ...

随机推荐

  1. 2.nginx配置详细说明

    Nginx配置详解 nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行 ...

  2. 3D打印技术的学习

    1. 我们使用3D建模软件:123Ddesign来设计 123D design软件保存格式有2种,分别为123dx和stl格式 123dx格式:选择菜单栏中“Save”下的“To my compute ...

  3. 【Qt开发】Qt5.7中文显示乱码解决方法两种

    升级到Qt5.X之后,原先解决的Qt显示中文乱码的方法突然不适用了,找了很多方式来解决这个问题 第一种: 在公司代码里看到的方法,先将对应的cpp文件用windows自带的记事本打开,另存为UTF-8 ...

  4. SOAP详解(转)

    1. SOAP简介 1.1应用背景 对于应用程序开发来说,使程序之间进行因特网通信是很重要的.目前的应用程序通过使用远程过程调用(RPC)在诸如 DCOM 与 CORBA 等对象之间进行通信,但是 H ...

  5. web 过滤器 Filter、 Spring 拦截器 interceptor

    1.过滤器(Filter)(在web.xml中注册过滤器) 首先说一下Filter的使用地方,我们在配置web.xml时,总会配置下面一段设置字符编码,不然会导致乱码问题: <filter> ...

  6. NOI-LINUX

    先把配置背过吧: (set-background-color "gray15")(set-foreground-color "gray")(global-lin ...

  7. hdu1263 简单模拟

    题意:依据水果销量表.依照特定格式输出 格式:首先按产地排序,然后同一产地按水果名排序 注意:第一,设计多级排序           第二.同一产地同一水果可能多次出现,所以须要在前面已经输入的水果里 ...

  8. (架构)React Native 导出项目全局共用组件的模块

    自定义组件全局使用(类似如下) import { ReactNavComponent, Widget, Util } from 'rn-yunxi'; const { RegexpUtil, Stor ...

  9. 第八讲 shiro 整合 ssm

    1.整合ssm并且实现用户登录和菜单权限 2.将shiro整合到ssm中 (1)添加shiro相关jar包 (2)在web.xml中添加shiro配置 <!-- 新增shiro配置 --> ...

  10. mailaddr - 关于邮件地址的描述

    DESCRIPTION 描述 本手册给出的是 Internet 使用的 SMTP 邮件地址的简要描述.这些地址的通常的格式是 user@domain 这里的域 (domain) 是分级的子域的列表,子 ...