#! 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登录界面,创建表单并填写提交的更多相关文章

  1. Flask - WTF和WTForms创建表单

    目录 Flask - WTF和WTForms创建表单 一. Flask-WTF 1.创建基础表单 2.CSRF保护 3.验证表单 4.文件上传 5.验证码 二. WTForms 1. field字段 ...

  2. 在火狐、360等浏览器中,用jquery创建表单并发送的问题

    某些浏览器无法使用js或者jquery直接创建表单并发送,这是由于这些浏览器在提交页面表单时要求页面有完整的标签项即<html><head><title></ ...

  3. 免费 PSD 下载: 20个精美的登录和注册表单

    注册表单有许多不同的形状和尺寸,有的只是单个的输入框,有的则需要多个步骤.登录表单的设计将定义网站的性质,因此它应进行针对性的设计.下面的列表提供了20个醒目的登录和注册表单设计为您提供灵感. 您可能 ...

  4. SPC2014 :“FOSL”不是替代InfoPath,只是另外一种创建表单的方式

    今天在SPC2014微软宣布他们技术路线图.其实,没有足够证据替代InfoPath,只是另外的一种尝试 - FOSL(对SharePoint列表表单). FOSL使用相同的引擎,用于创建表单的访问服务 ...

  5. activiti自定义流程之整合(二):使用angular js整合ueditor创建表单

    注:整体环境搭建:activiti自定义流程之整合(一):整体环境配置 基础环境搭建完毕,接下来就该正式着手代码编写了,在说代码之前,我觉得有必要先说明一下activit自定义流程的操作. 抛开自定义 ...

  6. activiti自定义流程之自定义表单(二):创建表单

    注:环境配置:activiti自定义流程之自定义表单(一):环境配置 在上一节自定义表单环境搭建好以后,我就正式开始尝试自己创建表单,在后台的处理就比较常规,主要是针对ueditor插件的功能在前端进 ...

  7. 【LABVIEW到C#】2》database的操作(一)之 创建access和创建表单

    namespace添加如下 using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

  8. activiti自己定义流程之整合(二):使用angular js整合ueditor创建表单

    基础环境搭建完成,接下来就该正式着手代码编写了,在说代码之前.我认为有必要先说明一下activit自己定义流程的操作. 抛开自己定义的表单不谈.通过之前的了解,我们知道一个新的流程開始.是在启动流程实 ...

  9. activiti自己定义流程之自己定义表单(二):创建表单

    注:环境配置:activiti自己定义流程之自己定义表单(一):环境配置 在上一节自己定义表单环境搭建好以后,我就正式開始尝试自己创建表单,在后台的处理就比較常规,主要是针对ueditor插件的功能在 ...

随机推荐

  1. 第 8 章 容器网络 - 058 - flannel 概述

    flannel 概述 flannel 是 CoreOS 开发的容器网络解决方案. flannel 为每个 host 分配一个 subnet,容器从此 subnet 中分配 IP,这些 IP 可以在 h ...

  2. oracle.exe 内存占用过大

    现象: 明明各个schema 占用的磁盘空间都不大. oracle.exe 却占用了差不多 3G 的内存. 解决: 查了google,各种英文关键字没有找到原因. 最后,中文检索到了. https:/ ...

  3. 雷林鹏分享: C# 教程

    C# 教程 C# 是一个简单的.现代的.通用的.面向对象的编程语言,它是由微软(Microsoft)开发的. 本教程将告诉您基础的 C# 编程,同时将向您讲解 C# 编程语言相关的各种先进理念. 现在 ...

  4. 20171024xlVBA批量获取PPT\WORD\PDF页数

    Public Sub ModifyFileNames() Dim FolderPath As String Dim FileNames As Variant Dim dotPos As Long Di ...

  5. JavaScript的几个概念简单理解(深入解释见You Don't know JavaScript这本书)

    ES201X是JavaScript的一个版本. ES2015新的feature let, const Scope, 块作用域 Hoisting Closures DataStructures: Obj ...

  6. Confluence 6 对一个空间进行归档后产生的影响

    空间 如果一个空间被归档: 将不会在查找结果中显示,除非你选择 在归档空间中查找(Search archived spaces).如果没有归档空间的话,这个功能是隐藏的. 页面和内容将不会在 Conf ...

  7. pytorch 中的 split

    Pytorch中的split问题: 1.使用torch.nn.Conv2d中有个参数是groups会将输入的feature map分组,此处需要注意的一点是分组之后各组的feature map的cha ...

  8. thinkphp 中MVC思想

    ThinkPHP5.0应用基于MVC(模型-视图-控制器)的方式来组织. MVC是一个设计模式,它强制性的使应用程序的输入.处理和输出分开.使用MVC应用程序被分成三个核心部件:模型(M).视图(V) ...

  9. Nim or not Nim? HDU - 3032

    题意:给定n堆石子,两人轮流操作,每次选一堆石子,取任意石子或则将石子分成两个更小的堆(非0),取得最后一个石子的为胜. 题解:比较裸的SG定理,用sg定理打表,得到表1,2,4,3,5,6,8,7, ...

  10. windows开启Apache的mod_rewrite模块

    windows下安装apache默认是没有开启mod_rewrite模块的,启用也很简单,修改apache配置文件httpd.conf,查找rewrite_module, 找到这行:#LoadModu ...