"""

很弱智的小脚本,记录下。也许以后看到会笑,因为太幼稚或者证明曾经也努力过。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()

自动添加菜品,加入运行中遇到的异常,生成日志文件...<工作中场景...>的更多相关文章

  1. 工具:从一个文件夹中复制jar到另一个文件夹中

    工具类:从一个文件夹中复制jar到另一个文件夹中 需要的小伙伴可以试一试,很爽哦,有时候真的很需要! 需求:当我们拿到一个maven项目时,而maven项目的jar包都是通过pom.xml文件管理的, ...

  2. delphi中单独编译pas生成dcu文件

    delphi中单独编译pas生成dcu文件 在网上下载了一个带源码的组件,结果碰到提示说缺少xxx.dcu.一看它的目录下确实没有,那能不能生成一个呢? 当然可以! 方法是使用delphi的安装目录\ ...

  3. PHP中错误与异常的日志记录用法分析

    原文:http://www.jb51.net/article/89548.htm ----------------------------------------------------------- ...

  4. log4j自动生成日志文件配置

    生成文件到默认位置: #生成日志文件 #log4j.appender.systemFile=org.apache.log4j.RollingFileAppender #按天生成 log4j.appen ...

  5. 【转载】C#代码开发过程中如何快速比较两个文件夹中的文件的异同

    在日常的使用电脑的过程中,有时候我们需要比较两个文件夹,查找出两个文件夹中不同的文件以及文件中不同的内容信息,进行内容的校对以及合并等操作.其实使用Beyond Compare软件即可轻松比较,Bey ...

  6. python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件

    python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 python操作txt文件中 ...

  7. Flask log配置,实现按照日期自动生成日志文件

    Flask自带了logger模块,用来方便程序员群众记录日志,这里粘贴出来的是一段代码,用来初始化日志各项配置参数,并根据日期自动生成日志文件. #log配置,实现日志自动按日期生成日志文件def m ...

  8. JNI中使用cl命令生成DLL文件

    问题描述:     在使用JNI调用DLL时,首先需要生成DLL文件 问题解决:     (1)现在使用VS2008的cl.exe程序,生成DLL文件 (1.1)cl.exe环境搭建 注:   cl. ...

  9. springboot添加log4j日志配置log4j.xml生成日志文件

    第一步:添加pom文件依赖 <!-- log4j --> <dependency> <groupId>org.springframework.boot</gr ...

随机推荐

  1. iOS webview注入JS

    - (void)webViewDidFinishLoad:(UIWebView *)webView { NSString *js = @"function imgAutoFit() { \ ...

  2. sql server 复制、镜像常见故障处理

    sql server2008数据库复制实现数据同步常见问题 操作使用的一些技巧(事务复制类型): 1.如何修改一个已经发布的表的属性? 将发布所有订阅删除,(发布不用删除),就可以在发布属性的项目中取 ...

  3. pip安装提示pkg_resources.DistributionNotFound: pip==18.1

    在用pip install安装依赖的时候提示pkg_resources.DistributionNotFound: pip==18.1,更新一下pip就可以了 easy_install pip==18 ...

  4. String[]与List<String>的相互转换

    String[]转List String[] arr = new String[]{"a","b","c"}; List<String ...

  5. SSIS--(1)

    目标:两组数据比对,A 来源Excel ,B 来源 Sql server DB ,比对合并,取值放入目标 C 中 首先使用工具SSIS包 一,以数据源 A 为准核对B 中是否有A 的数据和计算等动作 ...

  6. 报错解决——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 ...

  7. 初识Shell与Shell脚本

    初识Shell Shell 是一个用 C 语言编写的程序,Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内 ...

  8. PE破解win2008登录密码

    1.使用PE系统启动计算机. 2.使用cmd命令行程序. 3.备份一下magnify.exe(windows 放大镜程序). copy C:\WINDOWS\system32\magnify.exe ...

  9. wechat-注意事项

  10. 关于运行python脚本产生__pycache__

    是什么? 用python编写好一个工程,在第一次运行后,总会发现工程根目录下生成了一个__pycache__文件夹,里面是和py文件同名的各种 *.pyc 或者 *.pyo 文件. python脚本编 ...