jcyrss / baiyueheiyu Goto Github PK
View Code? Open in Web Editor NEW教程官网地址 www.byhy.net
教程官网地址 www.byhy.net
from selenium import webdriver
import time
# 导入Select类
from selenium.webdriver.support.ui import Select
from lib import CHECK_POINT2
# 删除界面列出的所有条目,
# 比如: 订单,或者客户,或者药品
# 由于 代码逻辑相同,封装在函数 delAll 中
def delAll(wd):
while True:
# 修改全局等待时间,以免找不到元素,等待时间较长
wd.implicitly_wait(1)
# 找到所有删除按钮
# 注意,一定要每次循环都 执行一遍,
# 因为每次删除后,界面元素重新 产生了
delButtons = wd.find_elements_by_css_selector(
'.search-result-item-actionbar label:nth-last-child(1)')
# 再改回原来的等待时间
wd.implicitly_wait(5)
# 没有删除按钮,说明已经全部删除了
if not delButtons:
break
# 点击删除按钮
delButtons[0].click()
# 弹出对话框 点击确定
wd.switch_to.alert.accept()
# 等待1秒,等界面刷新
time.sleep(1)
# 添加 客户 或者 药品
# 由于 代码逻辑相同,封装在函数中
def addCustomerOrMedicion(field1,field2,field3):
# 点击添加按钮
wd.find_element_by_class_name('glyphicon-plus').click()
# form-contorl 对应3个输入框
inputs = wd.find_elements_by_css_selector('.add-one-area .form-control')
# 输入 药品名称
inputs[0].send_keys(field1)
# 输入 编号
inputs[1].send_keys(field2)
# 输入 描述
inputs[2].send_keys(field3)
# 第1个 btn-xs 就是创建按钮, 点击创建按钮
wd.find_element_by_css_selector('.add-one-area .btn-xs').click()
# 等待界面刷新稳定
time.sleep(1)
wd = webdriver.Chrome()
wd.implicitly_wait(5)
wd.get('http://127.0.0.1/mgr/sign.html')
# 根据 ID 选择元素,并且输入字符串
wd.find_element_by_id('username').send_keys('byhy')
wd.find_element_by_id('password').send_keys('88888888')
# 点击登录
wd.find_element_by_tag_name('button').click()
# **** 第1步:初始化操作 ****
# 先删除掉系统中所有的订单、客户和药品
# 点击订单菜单,删除所有订单
wd.find_element_by_css_selector('.sidebar-menu li:nth-of-type(4)').click()
delAll(wd)
# 点击药品菜单,删除所有药品
wd.find_element_by_css_selector('.sidebar-menu li:nth-of-type(3)').click()
delAll(wd)
# 点击客户菜单,删除所有客户
wd.find_element_by_css_selector('.sidebar-menu li:nth-of-type(2)').click()
delAll(wd)
# **** 第2步:添加 客户 、 药品 、订单
# **** 添加 客户 和 药品 *****
# 点击药品菜单
wd.find_element_by_css_selector('.sidebar-menu li:nth-of-type(2)').click()
addCustomerOrMedicion('南京中医院1','2551867851','江苏省-南京市-秦淮区-汉中路-501')
addCustomerOrMedicion('南京中医院2','2551867852','江苏省-南京市-秦淮区-汉中路-502')
addCustomerOrMedicion('南京中医院3','2551867853','江苏省-南京市-秦淮区-汉中路-503')
# 点击客户菜单
wd.find_element_by_css_selector('.sidebar-menu li:nth-of-type(3)').click()
addCustomerOrMedicion('青霉素盒装1','YP-32342341','青霉素注射液,每支15ml,20支装')
addCustomerOrMedicion('青霉素盒装2','YP-32342342','青霉素注射液,每支15ml,30支装')
addCustomerOrMedicion('青霉素盒装3','YP-32342343','青霉素注射液,每支15ml,40支装')
# **** 添加 订单 *****
# 点击订单菜单
wd.find_element_by_css_selector('.sidebar-menu li:nth-of-type(4)').click()
# 点击添加按钮
wd.find_element_by_class_name('glyphicon-plus').click()
# 输入订单名称
name = wd.find_element_by_css_selector('.add-one-area .form-control')
name.send_keys('南中订单1')
# 两个select
selectElements = wd.find_elements_by_css_selector('.add-one-area select')
# 选择客户
Select(selectElements[0]).select_by_visible_text("南京中医院2")
# 选择药品
Select(selectElements[1]).select_by_visible_text("青霉素盒装1")
wd.find_element_by_css_selector(
'.add-one-area input[type=number]')\
.send_keys('100')
# 第1个 btn-xs 就是创建按钮, 点击创建按钮
wd.find_element_by_css_selector('.add-one-area .btn-xs').click()
# **** 第3步: 查看 添加 订单信息 *****
# 找到 列表最上面的药品信息
# 注意,药品
items = wd.find_elements_by_css_selector(
'div.search-result-item span,div.search-result-item p')[:8]
texts = [item.text for item in items]
print(texts)
# 订单日期信息到秒,不方便直接验证,先取出来
orderTime = texts.pop(3)
# 预期内容为
expected = [
'订单:',
'南中订单1',
'日期:',
'客户:',
'南京中医院2',
'药品:',
'青霉素盒装1 * 100'
]
CHECK_POINT2('药品信息和添加内容一致', texts == expected)
# 再检查订单日期时间,转化为整数时间,好比较
intOrderTime = int(time.mktime(time.strptime(orderTime, '%Y-%m-%d %H:%M:%S')))
curTime = int(time.time())
# 绝对值 差距在100秒内
deviation = abs(intOrderTime-curTime)
print(deviation)
CHECK_POINT2('订单时间误差', deviation<100)
wd.quit()
c20191219a
tcs-all.xlsx
sele-20191220f
from selenium import webdriver
from lib import CHECK_POINT2
wd = webdriver.Chrome()
wd.implicitly_wait(5)
wd.get('http://127.0.0.1/mgr/sign.html')
# 根据 ID 选择元素,并且输入字符串
wd.find_element_by_id('username').send_keys('byhy')
wd.find_element_by_id('password').send_keys('88888888')
# 根据标签名查找元素
wd.find_element_by_tag_name('button').click()
wd.find_element_by_css_selector('.main-footer .pull-right').click()
# 记录当前窗口 handler,一遍后续返回
startWnd = wd.current_window_handle
# 切换到打开的 白月黑羽网页
for wnd in wd.window_handles:
wd.switch_to.window(wnd)
if '白月黑羽' in wd.title:
wd.maximize_window()
break
# 获取导航菜单项目
navItems = wd.find_elements_by_css_selector('#site-nav li')
navTitles = [item.text for item in navItems]
print(navTitles)
CHECK_POINT2('白月黑羽官网菜单是否和预期一致',
navTitles ==[
'Python基础',
'Python进阶',
'Web开发',
'自动化和性能测试',
'Linux和MySQL',
'练习作业',
'常见问题',
'好文分享'
])
# 返回起始网页
wd.switch_to.window(startWnd)
# 点击顶部 用户 图标
wd.find_element_by_css_selector('.navbar-custom-menu .user-menu').click()
#点击退出登录
wd.find_element_by_css_selector('.user-footer div.pull-right').click()
# 等待一会儿,等待新的网址加载
from time import sleep
sleep(2)
#检查url,判断是否进入登录页面
CHECK_POINT2('进入登录页面', '/mgr/sign.html' in wd.current_url)
wd.quit()
sele-20191220a
参考
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://127.0.0.1/mgr/sign.html')
input('按回车退出程序:')
driver.quit()
点击链接下载 数据文件包
stock.zip
解压后得到的是一个股票代码文件,记录了**所有的股票名称和代码。
请写一个股票信息查询程序,从文件加载数据, 并且显示 ‘请输入要查询的股票名称或代码:’
当用户输入股票代码(6位全是数字)时,打印出对应的 股票名称和代码
,
当用户输入股票名称(不全是数字)时,打印出对应的 股票名称和代码
,
vscode 的 配置 settings.json
{
"workbench.settings.openDefaultKeybindings":true,
"workbench.view.experimental.allowMovingToNewContainer":true,
"terminal.integrated.shell.windows": "C:\\Windows\\System32\\cmd.exe",
"git.autofetch": true,
"git.enableSmartCommit": true,
"files.autoSave": "afterDelay",
"editor.fontSize": 15,
"workbench.sideBar.location": "left",
"workbench.startupEditor": "newUntitledFile",
"gitlens.codeLens.authors.enabled": false,
"gitlens.hovers.annotations.changes": false,
"gitlens.hovers.currentLine.changes": false,
"gitlens.hovers.annotations.details": false,
"gitlens.hovers.annotations.enabled": false,
"gitlens.showWhatsNewAfterUpgrades": false,
"eslint.enable": false,
"[python]": {
"editor.insertSpaces": true,
"editor.tabSize": 4
},
"gitlens.advanced.messages": {
"suppressSupportGitLensNotification": true
},
"python.jediEnabled": false,
"window.zoomLevel": 0,
"explorer.confirmDelete": false,
"files.eol": "\n",
"gitlens.gitCommands.skipConfirmations": [
"fetch:command",
"stash-push:command",
"switch:command",
"push:command"
],
"gitlens.gitCommands.closeOnFocusOut": true,
"gitlens.currentLine.enabled": false,
"gitlens.hovers.enabled": false,
"markdown-toc.updateOnSave": false,
"editor.fontFamily": "Consolas, 'Courier New', monospace, '微软雅黑'",
"editor.accessibilitySupport": "off",
"diffEditor.ignoreTrimWhitespace": false,
"workbench.preferredDarkColorTheme": "GitHub Plus",
"workbench.preferredHighContrastColorTheme": "GitHub Plus",
"workbench.preferredLightColorTheme": "GitHub Plus",
"http.proxy": "http://127.0.0.1:10800",
// https://code.visualstudio.com/api/extension-guides/color-theme#workbench-colors
"workbench.colorCustomizations": {
"[GitHub Plus]": {
// activity bar
"activityBar.border": "#e9e1e1",
"activityBar.background": "#ffffff",
"activityBar.foreground": "#c72160",
"activityBar.inactiveForeground": "#4b94b6",
"activityBarBadge.background": "#d73a49",
// sideBar bar
"sideBar.border": "#e7e4e4",
"sideBar.background": "#ffffff",
"sideBar.foreground": "#000000",
"sideBarSectionHeader.background": "#ffffff",
"sideBarSectionHeader.border": "#e1e1e6",
"editorLineNumber.foreground": "#4d5f3c",
}
},
"editor.mouseWheelZoom": true,
"workbench.colorTheme": "GitHub Plus",
// https://stackoverflow.com/a/57426933/2602410
"editor.tokenColorCustomizations": {
"[GitHub Plus]": {
"textMateRules": [
{
"scope": [
"entity.name.type.class",
"entity.other.inherited-class"
],
"settings": {
"foreground": "#296fb6",
"fontStyle": "bold"
}
},
{
"scope": [
"meta.definition.method"
],
"settings": {
"foreground": "#2871bb",
"fontStyle": "underline"
}
},
{
"scope": [
"meta.object-literal.key",
"variable.other.property"
],
"settings": {
"foreground": "#296fb6",
}
},
{
"scope": [
"variable.parameter"
],
"settings": {
"foreground": "#b629a3",
"fontStyle": "italic"
}
},
{
"scope": [
// "variable.parameter",
"variable.other.readwrite",
"meta.arrow.js"
],
"settings": {
"foreground": "#06172b"
}
},
{
"scope": [
"meta.function-call",
"entity.name.function"
],
"settings": {
"foreground": "#2871bb"
}
}
]
}
}
}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.