python自动化测试(九):EcShop添加商品功能

前置条件:

本地部署:ECShop的版本是3.0.0、Google版本是

Google Chrome65.0.3325.162 (正式版本) (32 位) 

py的selenium版本是3.11.0

目录

一、前置代码

二、添加商品操作

2.1 点击添加商品

2.2 添加名称、分类、品牌

2.3 添加价格、勾选促销、添加促销

2.4 清除促销输入框的只读属性

2.5 清除并设置促销日期(开始与结束)

2.6 上传图片(pywinauto)

2.7 确定提交


一、前置代码

(打开ECSHOP后台,登录)

# coding=utf-8
# 导入自动化的模块
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support.select import Select
import time
import pywinauto
# 定义一个浏览器
driver = webdriver.Chrome()
url = "http://localhost/ecshop/admin/privilege.php?act=login"
# 打开一个浏览器
driver.get(url)
# 最大化窗口尺寸
driver.maximize_window()
# 添加全局的等待时间
driver.implicitly_wait(10)
# 输入用户名
driver.find_element_by_name("username").send_keys("admin")
# 输入用户名
driver.find_element_by_name("password").send_keys("t1194783")
# 点击登录按钮
driver.find_element_by_class_name("btn-a").click()

二、添加商品操作

2.1 点击添加商品

# 2.1 点击添加商品
# 切换子页面
driver.switch_to.frame("menu-frame")
# 点击添加新商品
driver.find_element_by_link_text("添加新商品").click()
# 换回最外层默认页面
driver.switch_to.default_content()
# 切换到表单子页面
driver.switch_to.frame("main-frame")
time.sleep(1)

2.2 添加名称、分类、品牌

# 输入商品名称
driver.find_element_by_name("goods_name").send_keys("海尔冰箱")
# 选择商品分类
ele = driver.find_element_by_name("cat_id")
s = Select(ele)
s.select_by_index(2)# 选择商品品牌
ele = driver.find_element_by_name("brand_id")
s = Select(ele)
s.select_by_visible_text("海尔")

2.3 添加价格、勾选促销、添加促销

# 输入商品价格
driver.find_element_by_name("shop_price").clear()
driver.find_element_by_name("shop_price").send_keys("3000.00")
# 勾选促销价
driver.find_element_by_id("is_promote").click()
# 输入促销价格
driver.find_element_by_id("promote_1").clear()
driver.find_element_by_id("promote_1").send_keys("2800.00")

2.4 清除促销输入框的只读属性

通过js获取到元素

script = 'document.getElementById("promote_start_date").removeAttribute("readonly")'
driver.execute_script(script)
time.sleep(3)

2.5 清除并设置促销日期(开始与结束)

# 设置促销日期
driver.find_element_by_id("promote_start_date").clear()
time.sleep(2)
driver.find_element_by_id("promote_start_date").send_keys("2023-10-10")
# 去除促销日期结束输入框的只读属性
script = 'document.getElementById("promote_end_date").removeAttribute("readonly")'
driver.execute_script(script)
# 输入促销结束日期
time.sleep(3)
driver.find_element_by_id("promote_end_date").clear()
time.sleep(2)
driver.find_element_by_id("promote_end_date").send_keys("2023-12-31")

2.6 上传图片(pywinauto)

# 上传商品图片(通过pywinauto进行图片上传)
driver.find_element_by_name("goods_img").click()
time.sleep(2)
# 通过窗口打开
program = pywinauto.Desktop()
print(type(program))
# 通过弹框名称进入控件中
window = program['打开']
# 输入上传图片的地址
window['Edit'].type_keys(r"C:\Users\13195\Desktop\Logo.png")
# 点击打开按钮
window['Button'].click()

2.7 确定提交

time.sleep(3)
driver.find_element_by_xpath("//input[@name='goods_id']/../input[2]").click()
time.sleep(10)
driver.quit()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/126918.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android sqlite分页上传离线订单后删除

1、判断订单表的的总数是否大于0,如果大于0开始上传订单 public int getOrderCount() {String query "SELECT COUNT(*) FROM " TABLE_NAME;Cursor cursor db.rawQuery(query, null);int count 0;if (cursor.moveToFirst()) {count cursor.getInt(0);…

flask 实践

flask框架研究: https://blog.csdn.net/shifengboy/article/details/114274271 https://blog.csdn.net/weixin_67531112/article/details/128256170 实现下载文件功能 vim test.py import io from flask import Flask, send_fileapp Flask(__name__) app.route(/…

QML 创建 Web 混合应用

作者: 一去、二三里 个人微信号: iwaleon 微信公众号: 高效程序员 随着互联网的快速发展,Web 应用在各个领域中变得越来越流行。为了满足用户对多样化功能的需求,我们经常需要将 Web 技术和原生应用相结合,来创建混合应用程序。 混合应用程序:是一种应用程序开发方法,它…

人工智能领域CCF推荐国际学术刊物最新目录(全)

2021年1月,CCF决定启动新一轮中国计算机学会推荐国际学术会议和期刊目录调整工作并委托CCF学术工作委员会组织实施。 2023年3月8日, 中国计算机学会正式发布了2022版《中国计算机学会推荐国际学术会议和期刊目录》(以下简称《目录》) 。 相较于上一版目录&#xff0…

LeetCode----1979. 找出数组的最大公约数

题目 给你一个整数数组 nums ,返回数组中最大数和最小数的 最大公约数 。 两个数的 最大公约数 是能够被两个数整除的最大正整数。 示例 1: 输入:nums = [2,5,6,9,10] 输出:2 解释: nums 中最小的数是 2 nums 中最大的数是 10 2 和 10 的最大公约数是 2 示例 2: 输入…

golang包的管理

Go语言中包的使用 Go语言使用包(package)这种语法元素来组织源码,所有语法可见性均定义在package这个级别,与Java 、python等语言相比,这算不上什么创新,但与C传统的include相比,则是显得“先进…

程序员不得不知道的三大编程语言,看看你了解吗?

作为一名合格的程序员,不仅要有过硬的技术,还要了解许多基础知识。编程语言可是程序员工作的主力军,但是它是如何产生和发展的,你知道吗?接下来就让我们一起来看看编程语言和它们的发展吧!记得点赞加收藏哦…

自学SLAM(6)相机与图像实践:OpenCV处理图像与图像拼接(点云)

前言 如果写过SLAM14讲第一次的作业,或者看过我之前的运行ORB_SLAM2教程应该都安装过OpenCV了,如果没有安装,没关系,可以看我之前的博客,里面有如何安装OpenCV。 链接: 运行ORB-SLAM2(含OpenCV的安装&…

【AI视野·今日NLP 自然语言处理论文速览 第六十一期】Tue, 24 Oct 2023

AI视野今日CS.NLP 自然语言处理论文速览 Tue, 24 Oct 2023 (showing first 100 of 207 entries) Totally 100 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers LINC: A Neurosymbolic Approach for Logical Reasoning by Combining …

白客速成指南

当涉及到网络安全和白客(Ethical Hacking)时,需要非常谨慎和负责任。在这个指南中,我会尽力提供一个详细的白客速成指南,但请记住,在进行任何实践之前,确保遵守当地法律,并且只在合法…

Ajax学习笔记第4天

做决定之前仔细考虑,一旦作了决定就要勇往直前、坚持到底! 【1 模仿百度招聘】 整个流程展示: 1.文件目录 2.页面效果展示及代码 data中的page1数据展示 2.1 主页 index.html:index里面代码部分解释 underscore.js :模板页面的相关代码 &…

清华大模型GLM

2022年,清华大学发布了一款具有重要意义的 GLM 大模型,它不仅在中文语言处理方面取得了显著的进展,还在英文语言处理方面表现出了强大的能力。GLM大模型区别于OpenAI GPT在线大模型只能通过API方式获取在线支持的窘境,GLM大模型属于开源大模型,可以本地部署进行行业微调、…

基于Langchain+向量数据库+ChatGPT构建企业级知识库

▼最近直播超级多,预约保你有收获 近期直播:《基于 LLM 大模型的向量数据库企业级应用实践》 1— LangChain 是什么? 众所周知 OpenAI 的 API 无法联网的,所以如果只使用自己的功能实现联网搜索并给出回答、总结 PDF 文档、基于某…

主从复制(gtid方式)

基于事务的Replication,就是利用GTID来实现的复制 GTID(全局事务标示符)最初由google实现,在MySQL 5.6中引入.GTID在事务提交时生成,由UUID和事务ID组成.uuid会在第一次启动MySQL时生成,保存在数据目录下的…

SQL 语句快速参考

SQL 语句语法AND / ORSELECT column_name(s) FROM table_name WHERE condition AND|OR conditionALTER TABLEALTER TABLE table_name ADD column_name datatype or ALTER TABLE table_name DROP COLUMN column_name AS (alias)SELECT column_name AS column_alias FROM table_n…

Java对接数据万象API实现视频查重、视频相似度校验处理

使用依赖 <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.13</version></dependency><dependency><groupId>cn.hutool</groupId><artifact…

一台服务器安装两个mysql、重置数据库用于测试使用

文章目录 一、切数据库数据存储文件夹已经存在数据库数据文件夹新建数据库数据文件夹 二、安装第二个mysql安装新数据库初始化数据库数据启动数据库关闭数据库 三、mysqld_multi单机多实例部署参考文档 一、切数据库数据存储文件夹 这个方法可以让你不用安装新的数据库&#x…

kubernetes存储-configmap

一、字面值创建 二、通过文件创建 三、通过目录创建 四、通过yaml文件创建 五、使用configmap设置环境变量 六、使用conigmap设置命令行参数 七、通过数据卷使用configmap 八、configmap热更新

10.30寄存器,寄存器堆

寄存器 8位环形移位寄存器 module shift_regist (input wire clk,input wire rstn,input wire [7:0]D,output reg [7:0]Q ); always (posedge clk or negedge rstn) beginif(!rstn)Q<8b000000;elseQ<{D[6:0],D[7]} ; end endmodule //shift_regist 输入有时钟…

Springboot引入mybatis-plus及操作mysql的json字段

springboot引入mybatis-plus&#xff0c;创建springboot项目省略 pom文件 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.3.4</version></dependency> <!…