自动添加菜品,加入运行中遇到的异常,生成日志文件...<工作中场景...>
"""
很弱智的小脚本,记录下。也许以后看到会笑,因为太幼稚或者证明曾经也努力过。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 ...
随机推荐
- iOS webview注入JS
- (void)webViewDidFinishLoad:(UIWebView *)webView { NSString *js = @"function imgAutoFit() { \ ...
- sql server 复制、镜像常见故障处理
sql server2008数据库复制实现数据同步常见问题 操作使用的一些技巧(事务复制类型): 1.如何修改一个已经发布的表的属性? 将发布所有订阅删除,(发布不用删除),就可以在发布属性的项目中取 ...
- pip安装提示pkg_resources.DistributionNotFound: pip==18.1
在用pip install安装依赖的时候提示pkg_resources.DistributionNotFound: pip==18.1,更新一下pip就可以了 easy_install pip==18 ...
- String[]与List<String>的相互转换
String[]转List String[] arr = new String[]{"a","b","c"}; List<String ...
- SSIS--(1)
目标:两组数据比对,A 来源Excel ,B 来源 Sql server DB ,比对合并,取值放入目标 C 中 首先使用工具SSIS包 一,以数据源 A 为准核对B 中是否有A 的数据和计算等动作 ...
- 报错解决——make: *** No targets specified and no makefile found. Stop
wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.6.tar.gz tar zxvf ncurses-5.6.tar.gz #切换目录到ncurses ...
- 初识Shell与Shell脚本
初识Shell Shell 是一个用 C 语言编写的程序,Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内 ...
- PE破解win2008登录密码
1.使用PE系统启动计算机. 2.使用cmd命令行程序. 3.备份一下magnify.exe(windows 放大镜程序). copy C:\WINDOWS\system32\magnify.exe ...
- wechat-注意事项
- 关于运行python脚本产生__pycache__
是什么? 用python编写好一个工程,在第一次运行后,总会发现工程根目录下生成了一个__pycache__文件夹,里面是和py文件同名的各种 *.pyc 或者 *.pyo 文件. python脚本编 ...