selenium登录界面,创建表单并填写提交
#! python3
# -*- coding:utf8 -*-
# https://selenium-python.readthedocs.io/api.html#selenium.webdriver.remote.webdriver.WebDriver.switch_to_frame
#自动提交表单
from selenium import webdriver
import time
import openpyxl
#读取Excel数据
wb=openpyxl.load_workbook('E:\\work\\newFile.xlsx')
sheet=wb.get_sheet_by_name('Sheet')
max_rowss=sheet.max_row
datass=[[] for i in range(max_rowss-1)]
n=0
for i in range(2,max_rowss+1):
if sheet.cell(row=i,column=1).value == None:
break
n+=1
for j in range(1,7):
datass[n-1].append(sheet.cell(row=i,column=j).value)
print(sheet.cell(row=i,column=j).value)
print('******row %d is done*******' % (n) )
#打开浏览器
bs=webdriver.Chrome('C:\Program Files (x86)\Google\Chrome\Application\chromedriver')
bs.get('http://172.18.135.40:8081/auth/login')
a=bs.find_element_by_name("usr_name")
b=bs.find_element_by_name("password")
a.send_keys('usrname')
b.send_keys('pswd')
#跳转登录
b.submit()
#c=bs.find_element_by_xpath("//input[@type='submit']")
#c.click()
#转至默认内容
time.sleep(1)
bs.switch_to_default_content()
c=bs.find_element_by_link_text(u"产品分类")
c.click()
time.sleep(1)
d=bs.find_elements_by_xpath("/html/body/section/div/div/iframe[@frameborder='0']")
#转至第一个#document
bs.switch_to_frame(d[1])
e=bs.find_element_by_xpath("/html/body/div/div/div/span/a[@class='btn btn-primary radius']")
#点击‘创建接口’
e.click()
#转至第二个#document
time.sleep(2)
bs.switch_to_frame("layui-layer-iframe1")
ee=bs.find_elements_by_id("tab_demo")
ff=ee[0].find_elements_by_xpath("./div")
#ff中包含6个元素,包含对应模块中的内容信息,依次为 导航菜单,基本信息,字典参数,业务入参,规则代码,变动说明
f=ee[0].find_elements_by_xpath("./div/span")
#f中包含5个元素,点击可切换界面 。依次分别是菜单栏上的 基本信息,字典参数,业务入参,规则代码,变动说明
#切换至 字典参数 界面
f[1].click()
time.sleep(1)
#查找添加按钮
ffg=ff[2].find_elements_by_xpath("./div/a/i")
for j in range(n):
#添加一行表格
ffg[0].click()
#查找表格的行,lineNm中第二个tr为第一行填充格。
lineNm=ff[2].find_elements_by_xpath("./div/table/tbody/tr")
print(len(lineNm)-1,' lines has created! ')
def ifNull(val):
if val==None:
return ''
else:
return val
print('datass: ',len(datass) )
for j in range(n):
ffh=lineNm[j+1].find_elements_by_xpath("./td/input")
#print("line's length is : ",len(ffh))
for i in range(6):
ffh[i].send_keys(ifNull(datass[j][i]))
print("game is over!")
selenium登录界面,创建表单并填写提交的更多相关文章
- Flask - WTF和WTForms创建表单
目录 Flask - WTF和WTForms创建表单 一. Flask-WTF 1.创建基础表单 2.CSRF保护 3.验证表单 4.文件上传 5.验证码 二. WTForms 1. field字段 ...
- 在火狐、360等浏览器中,用jquery创建表单并发送的问题
某些浏览器无法使用js或者jquery直接创建表单并发送,这是由于这些浏览器在提交页面表单时要求页面有完整的标签项即<html><head><title></ ...
- 免费 PSD 下载: 20个精美的登录和注册表单
注册表单有许多不同的形状和尺寸,有的只是单个的输入框,有的则需要多个步骤.登录表单的设计将定义网站的性质,因此它应进行针对性的设计.下面的列表提供了20个醒目的登录和注册表单设计为您提供灵感. 您可能 ...
- SPC2014 :“FOSL”不是替代InfoPath,只是另外一种创建表单的方式
今天在SPC2014微软宣布他们技术路线图.其实,没有足够证据替代InfoPath,只是另外的一种尝试 - FOSL(对SharePoint列表表单). FOSL使用相同的引擎,用于创建表单的访问服务 ...
- activiti自定义流程之整合(二):使用angular js整合ueditor创建表单
注:整体环境搭建:activiti自定义流程之整合(一):整体环境配置 基础环境搭建完毕,接下来就该正式着手代码编写了,在说代码之前,我觉得有必要先说明一下activit自定义流程的操作. 抛开自定义 ...
- activiti自定义流程之自定义表单(二):创建表单
注:环境配置:activiti自定义流程之自定义表单(一):环境配置 在上一节自定义表单环境搭建好以后,我就正式开始尝试自己创建表单,在后台的处理就比较常规,主要是针对ueditor插件的功能在前端进 ...
- 【LABVIEW到C#】2》database的操作(一)之 创建access和创建表单
namespace添加如下 using System; using System.Collections.Generic; using System.Linq; using System.Text; ...
- activiti自己定义流程之整合(二):使用angular js整合ueditor创建表单
基础环境搭建完成,接下来就该正式着手代码编写了,在说代码之前.我认为有必要先说明一下activit自己定义流程的操作. 抛开自己定义的表单不谈.通过之前的了解,我们知道一个新的流程開始.是在启动流程实 ...
- activiti自己定义流程之自己定义表单(二):创建表单
注:环境配置:activiti自己定义流程之自己定义表单(一):环境配置 在上一节自己定义表单环境搭建好以后,我就正式開始尝试自己创建表单,在后台的处理就比較常规,主要是针对ueditor插件的功能在 ...
随机推荐
- 第 8 章 容器网络 - 058 - flannel 概述
flannel 概述 flannel 是 CoreOS 开发的容器网络解决方案. flannel 为每个 host 分配一个 subnet,容器从此 subnet 中分配 IP,这些 IP 可以在 h ...
- oracle.exe 内存占用过大
现象: 明明各个schema 占用的磁盘空间都不大. oracle.exe 却占用了差不多 3G 的内存. 解决: 查了google,各种英文关键字没有找到原因. 最后,中文检索到了. https:/ ...
- 雷林鹏分享: C# 教程
C# 教程 C# 是一个简单的.现代的.通用的.面向对象的编程语言,它是由微软(Microsoft)开发的. 本教程将告诉您基础的 C# 编程,同时将向您讲解 C# 编程语言相关的各种先进理念. 现在 ...
- 20171024xlVBA批量获取PPT\WORD\PDF页数
Public Sub ModifyFileNames() Dim FolderPath As String Dim FileNames As Variant Dim dotPos As Long Di ...
- JavaScript的几个概念简单理解(深入解释见You Don't know JavaScript这本书)
ES201X是JavaScript的一个版本. ES2015新的feature let, const Scope, 块作用域 Hoisting Closures DataStructures: Obj ...
- Confluence 6 对一个空间进行归档后产生的影响
空间 如果一个空间被归档: 将不会在查找结果中显示,除非你选择 在归档空间中查找(Search archived spaces).如果没有归档空间的话,这个功能是隐藏的. 页面和内容将不会在 Conf ...
- pytorch 中的 split
Pytorch中的split问题: 1.使用torch.nn.Conv2d中有个参数是groups会将输入的feature map分组,此处需要注意的一点是分组之后各组的feature map的cha ...
- thinkphp 中MVC思想
ThinkPHP5.0应用基于MVC(模型-视图-控制器)的方式来组织. MVC是一个设计模式,它强制性的使应用程序的输入.处理和输出分开.使用MVC应用程序被分成三个核心部件:模型(M).视图(V) ...
- Nim or not Nim? HDU - 3032
题意:给定n堆石子,两人轮流操作,每次选一堆石子,取任意石子或则将石子分成两个更小的堆(非0),取得最后一个石子的为胜. 题解:比较裸的SG定理,用sg定理打表,得到表1,2,4,3,5,6,8,7, ...
- windows开启Apache的mod_rewrite模块
windows下安装apache默认是没有开启mod_rewrite模块的,启用也很简单,修改apache配置文件httpd.conf,查找rewrite_module, 找到这行:#LoadModu ...