#coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from time import sleep def search(driver, main_material_code):
autocompelete_input(driver, "vwMaterialForStandBy2_MainMaterial_search1", main_material_code)
btnfind = driver.find_element_by_link_text("查询")
btnfind.click() def autocompelete_input(cd, name, input_str):
iu_main = cd.find_element_by_id(name)
iu = iu_main.find_element(by=By.CLASS_NAME,value="mini-buttonedit-input")
iu.clear()
iu.send_keys(input_str)
sleep(1)
iu.send_keys(Keys.ENTER)
iu.send_keys(Keys.ENTER) def grid_input(cd, str):
zlist = cd.find_elements_by_class_name("mini-grid-editwrap")
print("数量:")
print(len(zlist))
zlast_el = len(zlist) - 1
input = zlist[zlast_el].find_element(by=By.CLASS_NAME ,value="mini-buttonedit-input")
input.send_keys(str)
sleep(1)
input.send_keys(Keys.ENTER)
input.send_keys(Keys.ENTER) options = webdriver.ChromeOptions()
options.add_argument("--start-maximized")
options.add_argument("disable-infobars") driver = webdriver.Chrome(chrome_options=options)
driver.implicitly_wait(30)
#driver.maximize_window()
driver.get("http://192.168.0.1") driver.find_element_by_id("txtName").send_keys("test")
driver.find_element_by_id("txtPassword").send_keys("123")
driver.find_element_by_id("BtnLogin").click() driver.find_element_by_link_text("data").click()
driver.find_element_by_link_text("backup").click() sleep(4) frame = driver.find_element(by="id",value="main")
driver.switch_to.frame(frame)
product_list = ["F-1", "F-2"]
material_list = ["E-1", "E-2", "E-3"] btnfind = driver.find_element_by_link_text("查询")
btndel = driver.find_element_by_link_text("删除") driver.find_element_by_id("collapse_search_button").click() search(driver, material_list[0]) sleep(2) rows = driver.execute_script("return vwMaterialForStandBy_datagrid2.data.length;") sleep(1)
print("行数:" + str(rows))
if rows >0 :
driver.execute_script("vwMaterialForStandBy_datagrid2.selectAll(true);")
sleep(1)
btndel.click()
sleep(1)
driver.find_element_by_class_name("mini-messagebox-buttons").find_element(by=By.XPATH ,value="//*[text()='确定']").click()
print("删除了") driver.find_element_by_id("vwMaterialForStandBy2_btnadd").click()
sleep(1)
btnadd = driver.find_element_by_id("btnadd_productcode_item")
for item in product_list:
btnadd.click()
grid_input(driver, item) sleep(2) btnadd = driver.find_element_by_id("btnadd_material_item")
for item in material_list:
btnadd.click()
grid_input(driver,item) sleep(2) driver.find_element_by_id("BatchAddWindow").find_element(by=By.LINK_TEXT ,value="保存").click() #driver.quit()

  

python selenium chrome 测试的更多相关文章

  1. Python + Selenium +Chrome 批量下载网页代码修改【新手必学】

    Python + Selenium +Chrome 批量下载网页代码修改主要修改以下代码可以调用 本地的 user-agent.txt 和 cookie.txt来达到在登陆状态下 批量打开并下载网页, ...

  2. Docker环境下运行python+selenium+chrome

    Docker环境下运行python+selenium+chrome docker运行时占用的资源非常少,而且能将环境进行有效的隔离,可以快速的进行部署,因此可以将docker与selenium结合实现 ...

  3. Python selenium chrome 环境配置

    Python selenium chrome 环境配置 一.参考文章: 1. 记录一下python easy_install和pip安装地址和方法 http://heipark.iteye.com/b ...

  4. Python selenium chrome打包exe后禁用控制台输出滚动日志

    Python selenium chrome打包exe后,在运行的过程中,如果遇到需要input()输入时,会发现被不断滚动刷新的日志把命令行输入快速顶掉了,通过查阅资料不断实践,发现以下方法有效: ...

  5. python+selenium+Chrome options参数

    python+selenium+Chrome options参数 Chrome Options常用的行为一般有以下几种: 禁止图片和视频的加载:提升网页加载速度. 添加代理:用于翻墙访问某些页面,或者 ...

  6. chrome浏览器爬虫WebDriverException解决采用python + selenium + chrome + headless模式

    WebDriverException: Message: unknown error: Chrome failed to start: crashed 第一种:如果出现下面情况: chrome浏览器有 ...

  7. Python+Selenium+Chrome 的一个案例

    第一步,下载chromeDrive:http://npm.taobao.org/mirrors/chromedriver(我下载的是2.43版本的chromedriver_win32.zip) 下载之 ...

  8. 在Centos7上安装Python+Selenium+Chrome+Chromedriver

    1.下载Chrome 上一篇文章已经演示过了Python+Selenium+Firefox+Geckodriver安装步骤并通过自动化脚本打开百度 因此当前只需要安装Chrome和Chromedriv ...

  9. Python&Selenium 数据驱动测试【unittest+ddt+xml】

    一.摘要 本博文将介绍Python和Selenium做自动化测试时,基于unittest框架,借助ddt模块,使用xml文件作为测试输入. 二.xml文件 保存路径:D:\\Programs\\Pyt ...

随机推荐

  1. 【a703】求逆序对(线段树的解法)

    Time Limit: 10 second Memory Limit: 2 MB 问题描述 给定一个序列a1,a2...an.如果存在i小于j 并且ai大于aj,那么我们称之为逆序对,求给定序列中逆序 ...

  2. js进阶 10-7 简单的伪类选择器可以干什么

    js进阶 10-7 简单的伪类选择器可以干什么 一.总结 一句话总结:伪类选择器是冒号. 1.学而不用,有什么用? 多用啊,在项目中多用 2.简单的伪类选择器可以干什么? 除某元素以外,某元素的一切索 ...

  3. 【codeforces 765A】Neverending competitions

    [题目链接]:http://codeforces.com/contest/765/problem/A [题意] 给你一个人的n个行程 行程都是从家到某个地方或从某个地方到家; 且是无序的,且如果到了非 ...

  4. NYOJ 36 最长公共子序列 (还是dp)

    这个好多算法书上都有,不仅限于<算法导论> 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描写叙述 咱们就不拐弯抹角了,如题.须要你做的就是写一个程序,得出最长公 ...

  5. 一起学Python:多线程-共享全局变量

    多线程-共享全局变量 from threading import Thread import time g_num = 100 def work1(): global g_num for i in r ...

  6. Python应用库大全总结

    学python,想必大家都是从爬虫开始的吧.毕竟网上类似的资源很丰富,开源项目也非常多. python学习网络爬虫主要分3个大的版块:抓取,分析,存储 当我们在浏览器中输入一个url后回车,后台会发生 ...

  7. 【a202】&&【9208】输油管道问题

    Time Limit: 10 second Memory Limit: 2 MB 问题描述 某石油公司计划建造一条由东向西的主输油管道.该管道要穿过一个有n 口油井的油 田.从每口油井都要有一条输油管 ...

  8. cxf maven 依赖 No message body writer foud.. contenttype:application/json

    最近使用cxf发布rest服务时遇到了如题的异常,最后发现是缺少依赖的问题.ps:我并没有使用spring cxf基本运行需要如下依赖 1 <dependency> <groupId ...

  9. Node.js学习疑惑整理

    1.Node.js 在调用某个包时,会首先检查包中 package.json 文件的 main 字段,将其作为 包的接口模块,如果 package.json 或 main 字段不存在,会尝试寻找 in ...

  10. pycharm输出乱码如\xe9\x9d\x92\xe8\x9b\x99\xe7\x8e\x8b\xe5\xad\x90转成中文

    转自:https://blog.csdn.net/baidu_19473529/article/details/54949453 利用Python解决unicode编码问题,有些json在控制台打印也 ...