#! 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. Vue.use源码分析

    我想有过vue开发经验的,对于vue.use并不陌生.当使用vue-resource或vue-router等全局组件时,必须通过Vue.use方法引入,才起作用.那么vue.use在组件引入之前到底做 ...

  2. 第 3 章 镜像 - 017 - RUN vs CMD vs ENTRYPOINT

    RUN.CMD 和 ENTRYPOINT 这三个 Dockerfile 指令看上去很类似,很容易混淆. 简单的说: RUN 执行命令并创建新的镜像层,RUN 经常用于安装软件包. CMD 设置容器启动 ...

  3. Netty实现简易http_server

    Netty可以通过一些handler实现简单的http服务器.具体有三个类,分别是HttpServer.java.ServerHandlerInit.java.BusiHandler.java. 具体 ...

  4. Python 编程快速上手 第八章总结

    在下面函数中的()中,可为相对路径,也可为绝对路径. 获知当前目录,改变当前目录,查看当前目录 更改当前目录:os.getcwd() 改变当前目录:os.chdir() 查看当前目录:os.listd ...

  5. Jedis与Lua脚本结合

    使用Lua脚本的好处    1.减少网络开销:可以将多个请求通过脚本的形式一次发送,减少网络时延和请求次数. 2.原子性的操作:Redis会将整个脚本作为一个整体执行,中间不会被其他命令插入.因此在编 ...

  6. maven---->配置,指令,插件,使用

    maven是用于java的自动化构建工具. 1.下载:http://maven.apache.org/download.cgi 下载下面截图标红处的文件 然后直接解压可以得到文件夹,得到如下文件夹 不 ...

  7. Linux中符号总结

    常用符号~   登陆用户当前的家目录 .   当前目录..   当前目录的上一级目录cd -   返回上一次的目录;   命令分隔符#   表示注释 ?   通配符中表示任意一个字符*   通配符中表 ...

  8. Spring Cloud之注册中心搭建

    一.注册中心服务端搭建 1)引入相关Maven坐标 <dependency> <groupId>org.springframework.cloud</groupId> ...

  9. 纯js无缝滚动

    HTML代码 <!--父容器要使用overflow: hidden;--> <div id="imgsList" style="height:150px ...

  10. Known Notation ZOJ - 3829 (后缀表达式,贪心)

    大意:给定后缀表达式, 每次操作可以添加一个字符, 可以交换两个字符的位置, 相邻数字可以看做一个整体也可以分开看, 求合法所需最少操作数. 数字个数一定为星号个数+1, 添加星号一定不会更优. 先判 ...