自动添加菜品,加入运行中遇到的异常,生成日志文件...<工作中场景...>
"""
很弱智的小脚本,记录下。也许以后看到会笑,因为太幼稚或者证明曾经也努力过。so...
"""
"""
这次厉害了,厉害了....
"""
from selenium import webdriver
# 导入封装的Logger
from com.learn_logging.logs_test import Logger
# 显示等待
from selenium.webdriver.support.wait import WebDriverWait
# 鼠标事件
from selenium.webdriver.common.action_chains import ActionChains
# 生成随机数字
import random
# 所有异常类
from selenium.common.exceptions import *
# 键盘模块
from selenium.webdriver.common.keys import Keys
import time
from selenium import webdriver
# 导入日志模块
from com.learn_logging.logs_test import Logger
#显示等待
from selenium.webdriver.support.wait import WebDriverWait
# 鼠标事件
from selenium.webdriver.common.action_chains import ActionChains
# 随机价格
import random
# 所有异常
from selenium.common.exceptions import *
# 键盘模块
from selenium.webdriver.common.keys import Keys
import time class Item:
def __init__(self):
# 初始化browser
self.browser = webdriver.Chrome()
self.url = 'http://xxxxxxxxxxx/login.jsp'
self.browser.get(self.url)
self.browser.implicitly_wait(10)
self.browser.maximize_window() def Clear(self):
# 清空输入框
self.browser.find_element_by_id('tenentid').clear()
self.browser.find_element_by_id('loginUserName').clear()
self.browser.find_element_by_id('password').clear() def Loggin(self, tenant, username, password):
# 参数化商户号、用户名、密码
self.browser.find_element_by_id('tenentid').send_keys(tenant)
self.browser.find_element_by_id('loginUserName').send_keys(username)
self.browser.find_element_by_id('password').send_keys(password)
self.browser.find_element_by_id('login').click() def Check(self):
# 检查登录是否成功
t = WebDriverWait(self.browser, 10, 1).until(lambda x: x.find_element_by_xpath(
"//ul[@id='first_nav']/a[2]").get_attribute('text').strip())
if t == '源数据管理':
Logger().log().info('登录成功^_^')
else:
Logger().log().info('登录失败T_T') def Go_item(self):
# 点击源数据管理
WebDriverWait(self.browser, 10, 1).until(lambda x: x.find_element_by_xpath(
"//ul[@id='first_nav']/a[2]/span")).click()
# 点击运营资料设置
WebDriverWait(self.browser, 10, 1).until(lambda x: x.find_element_by_xpath(
"//div[@id='_f2001']/a/span/span")).click()
# 鼠标事件,调用封装函数
self.Find_element(time.time()) def Random_add_item(self):
# 切换iframe
self.browser.switch_to_frame('iframe2167')
WebDriverWait(self.browser, 10, 1).until(lambda x: x.find_element_by_xpath(
"//ul[@id='menu_tree']/li/ul/li/ul/li/div/span[5]")).click()
WebDriverWait(self.browser, 10, 1).until(lambda x: x.find_element_by_xpath(
"//*[@id='_add']/span/span[1]")).click()
try:
file_name = 'item_names.txt'
with open(file_name, encoding='gbk') as f_obj:
for date in f_obj:
price = random.randint(1, 10)
date = date.strip()
# 菜品名称
n = WebDriverWait(self.browser, 10, 1).until(lambda x:x.find_element_by_xpath(
"//*[@id='ff']/table/tbody/tr[1]/td[6]/span/textarea"))
n.clear()
n.send_keys(Keys.BACKSPACE)
n.send_keys(date)
# 菜品价格
WebDriverWait(self.browser, 10, 1).until(lambda x: x.find_element_by_xpath(
"//*[@id='tt123']/div[1]/div[3]/ul/li[2]/a/span[1]")).click()
# 判断是否已经存在菜品价格数据
price_type = self.browser.find_element_by_xpath('//*[@id="datagrid-row-r4-2-0"]/td[7]/div').text
if price_type == '有效':
# 编辑 //*[@id="datagrid-row-r4-2-0"]/td[7]/div
WebDriverWait(self.browser, 10, 1).until(lambda x: x.find_element_by_xpath(
"//*[@id='datagrid-row-r4-2-0']/td[3]/div/div/span[1]")).click()
self.browser.find_element_by_xpath(
"//*[@id='datagrid-row-r4-2-0']/td[5]/div/table/tbody/tr/td/span/input[1]").clear()
WebDriverWait(self.browser, 10, 1).until(lambda x: x.find_element_by_xpath(
"//*[@id='datagrid-row-r4-2-0']/td[4]/div/table/tbody/tr/td/span/input[1]")).send_keys('例')
self.browser.find_element_by_xpath(
"//*[@id='datagrid-row-r4-2-0']/td[5]/div/table/tbody/tr/td/span/input[1]").send_keys(price)
else:
# 新增
WebDriverWait(self.browser, 10, 1).until(lambda x: x.find_element_by_xpath(
"//*[@id='edit_add1']/span/span[1]")).click()
WebDriverWait(self.browser, 10, 1).until(lambda x: x.find_element_by_xpath(
"//*[@id='datagrid-row-r4-2-0']/td[4]/div/table/tbody/tr/td/span/input[1]")).send_keys('例')
WebDriverWait(self.browser, 10, 1).until(lambda x: x.find_element_by_xpath(
"//*[@id='datagrid-row-r4-2-0']/td[5]/div/table/tbody/tr/td/span/input[1]")).send_keys(price)
# 保存价格
WebDriverWait(self.browser, 10, 1).until(lambda x: x.find_element_by_xpath(
"//*[@id='datagrid-row-r4-2-0']/td[3]/div/div/span")).click()
# 保存并继续
self.browser.find_element_by_xpath("//*[@id='btn_save_goon']/span/span").click()
# 菜品名称已经存在异常提示
time.sleep(2)
item_name = self.browser.find_element_by_xpath('/html/body/div[26]/div[2]')
# y1 = item_name.is_displayed()
if item_name.text == '菜品名称已存在!':
Logger().log().critical('保存菜品失败,原因:%s' % item_name.text)
Logger().log().critical('保存失败的菜品名称是:%s' % date)
y1 = item_name.is_displayed()
if y1:
# 关闭错误提示
self.browser.find_element_by_xpath('/html/body/div[26]/div[1]/div[2]/a').click()
continue
else:
continue
# 保存成功提示框
WebDriverWait(self.browser, 10, 1).until(lambda x: x.find_element_by_xpath(
"//*[contains(text(),'确定')]")).click()
except FileNotFoundError as e:
Logger().log().critical('文件没有找到%s' % e)
except UnicodeDecodeError as e:
Logger().log().critical('Unicode解码错误:%s' % e) def Find_element(self,starTime):
# 加入时间判断,避免死循环
intervalTime = 10
now = time.time()
if now - starTime > intervalTime:
return
element = self.browser.find_element_by_xpath("//ul[@id='third_nav_a']/li[3]/a/span")
ActionChains(self.browser).move_to_element(element).perform()
time.sleep(2)
element1 = self.browser.find_element_by_xpath("//div[@id='_t2043']/a[3]/span")
ActionChains(self.browser).move_to_element(element1).perform()
y = element1.is_displayed()
Logger().log().info('界面元素是否可见?%s' % y)
try:
if y:
WebDriverWait(self.browser, 10, 1).until(lambda x:x.find_element_by_xpath(
"//div[@id='_t2043']/a[3]/span")).click()
# element1.click()
else:
# 回调
self.Find_element(starTime)
except ElementNotVisibleException as e:
Logger().log().critical('鼠标事件点击失败:%s' % e) def Quit(self):
self.browser.quit() def Run(self):
self.Clear()
self.Loggin('xx', 'xx', 'xx')
self.Check()
self.Go_item()
self.Random_add_item()
self.Quit()
return self.browser if __name__ == '__main__':
Item().Run()
自动添加菜品,加入运行中遇到的异常,生成日志文件...<工作中场景...>的更多相关文章
- 工具:从一个文件夹中复制jar到另一个文件夹中
工具类:从一个文件夹中复制jar到另一个文件夹中 需要的小伙伴可以试一试,很爽哦,有时候真的很需要! 需求:当我们拿到一个maven项目时,而maven项目的jar包都是通过pom.xml文件管理的, ...
- delphi中单独编译pas生成dcu文件
delphi中单独编译pas生成dcu文件 在网上下载了一个带源码的组件,结果碰到提示说缺少xxx.dcu.一看它的目录下确实没有,那能不能生成一个呢? 当然可以! 方法是使用delphi的安装目录\ ...
- PHP中错误与异常的日志记录用法分析
原文:http://www.jb51.net/article/89548.htm ----------------------------------------------------------- ...
- log4j自动生成日志文件配置
生成文件到默认位置: #生成日志文件 #log4j.appender.systemFile=org.apache.log4j.RollingFileAppender #按天生成 log4j.appen ...
- 【转载】C#代码开发过程中如何快速比较两个文件夹中的文件的异同
在日常的使用电脑的过程中,有时候我们需要比较两个文件夹,查找出两个文件夹中不同的文件以及文件中不同的内容信息,进行内容的校对以及合并等操作.其实使用Beyond Compare软件即可轻松比较,Bey ...
- python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件
python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 python操作txt文件中 ...
- Flask log配置,实现按照日期自动生成日志文件
Flask自带了logger模块,用来方便程序员群众记录日志,这里粘贴出来的是一段代码,用来初始化日志各项配置参数,并根据日期自动生成日志文件. #log配置,实现日志自动按日期生成日志文件def m ...
- JNI中使用cl命令生成DLL文件
问题描述: 在使用JNI调用DLL时,首先需要生成DLL文件 问题解决: (1)现在使用VS2008的cl.exe程序,生成DLL文件 (1.1)cl.exe环境搭建 注: cl. ...
- springboot添加log4j日志配置log4j.xml生成日志文件
第一步:添加pom文件依赖 <!-- log4j --> <dependency> <groupId>org.springframework.boot</gr ...
随机推荐
- (1)DBA查询:数据库
1.数据库状态:[1]sys.databases [2]exec sp_spaceused 2.数据文件状态:[1]sys.master_files [2]查看ldf与mdf:sp_helpfil ...
- 20180323 DataTable增加DataRow方式优化
1. 我开始开发程序时,很多问题考虑不周期,不断的在改进中 最开始我的写法,创建一个DataTable 的Columns,采用语句 dt2.Columns.Add("ID"); 这 ...
- Delphi窗体置顶及失去焦点后取得焦点
unit u_FrmTopMostActive; interface uses Winapi.Windows; implementation // 窗体置顶 procedure SetXwForegr ...
- ATM_购物车作业
作业要求 模拟实现一个ATM + 购物商城程序 额度 15000或自定义 实现购物商城,买东西加入 购物车,调用信用卡接口结账 可以提现,手续费5% 支持多账户登录 支持账户间转账 记录每月日常消费流 ...
- protocol error, got 'n' as reply type byte + redis如何后台启动
其它机子的PHP访问redis爆“protocol error, got 'n' as reply type byte ”错误 解决办法: 在redis配置文件redis.conf中注释掉bind配置 ...
- 网站被植入Webshell的解决方案
什么是Webshell 从字面上理解,”Web”指需要服务器开放Web服务,”shell”指取得对服务器的某种程度的操作权限.Webshell指匿名用户(入侵者)通过网站端口,获取网站服务器的一定操作 ...
- 左右两栏div布局,高度自适应
页面结构如下: <div class="container"> <div class="left"> left </div> ...
- css3--单行、多行文本溢出
<style> .div1 { width: 200px; height: 200px; background: red url(img/user.png) no-repeat; text ...
- svn中给个地址,然后把自己建立的项目拖进去
1.首先checkout 那个地址就会得到一个空的文件夹(里面有.svn文件) 2.把你的项目copy一下,粘贴到你chekout的文件夹里面,所有文件都是?,然后选中全部,点击add,然后在comm ...
- url请求老是有 之前的部分url
url请求的时候老是会有之前的部分url <form action="shiro/register" method="POST"> 解决方法,加上本 ...