#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. Java中a=a+b 与 a+=b差别

    一般觉得a=a+b的运行效率是低于a+=b的,由于它多进行了一步中间变量的操作,并且会多占用一个变量的空间.而Java编译器默认对其进行了优化,优化之后两条语句都当做 a+=b来运行了,所以实际上是没 ...

  2. 【转】priority_queue的用法

    http://www.cnblogs.com/flyoung2008/articles/2136485.html priority_queue调用 STL里面的 make_heap(), pop_he ...

  3. Ubuntu-Docker[1]安装Docker,通过Docker部署net core代码,需要结合[.NET Core 18]发布、ASP.NET Core Docker部署

    1)通过系统自带包安装 通过自带包安装,可能Docker版本较旧 $ sudo apt-get update Reading package lists... Done $ sudo apt-get ...

  4. Graphics processing architecture employing a unified shader

    FIELD OF THE INVENTION The present invention generally relates to graphics processors and, more part ...

  5. java读取Properties文件及赋值

    懒得整理了,直接复制我工程里的代码: 第一个读取文件的类可以直接复制, 不复制的话,在下面取值和赋值部分的代码new EmailProperRead(systemType).properties根据自 ...

  6. Linode跨节点迁移:从Tokyo到Fremont

    背景 上一篇博客交代了如何在 Linode 上搭建邮件服务器,并配置好各种协议.记录来投入实际使用. 由于实践过程中,曾经尝试使用明文协议与服务器交流数据,可能泄露了账号.密码信息,造成之后被攻击发送 ...

  7. unity3D 4.6与上述号码. UI穿透问题,而且不穿透的真机模拟器渗透问题解决

    好久没有写博客颓废很长一段时间. . . 不废话. EventSystem.current.IsPointerOverGameObject(); //返回值true 如果是点击UI该.不过貌似没有使用 ...

  8. STL之适配器

    一,STL适配器简介 1.什么是适配器 STL提供了序列式容器,同时针对序列式容器提供了应用于不同场景的容器适配器,通俗讲适配器就是以序列式容器为底层数据结构,进一步封装了的为适应场景应用的容器.ST ...

  9. Java--面试通关要点

    这里,笔者结合自己过往的面试经验,整理了一些核心的知识清单,帮助读者更好地回顾与复习 Java 服务端核心技术.本文会以引出问题为主,后面有时间的话,笔者陆续会抽些重要的知识点进行详细的剖析与解答. ...

  10. 3 WCF一些基础铺垫

    1首先上一张wcf通讯图 a.Proxy代理部分底层调用的是 xxxxClient=> ChannelFactory=>IInpuChannel/IOutChannel... b.Tran ...