自动化测试-19.selenium定位之通过JS修改html写入日期数据以及从文本读取数据实战
- # -*- coding: utf-8 -*-
- from selenium import webdriver
- from selenium.webdriver.support.select import Select
- from selenium.webdriver.common.action_chains import ActionChains
- import time, SendKeys,os
- import codecs #用于文件读写,可以指定编码格式
- # 进入ecshop登录界面
- d = webdriver.Firefox()
- d.implicitly_wait(10) # 全局等待时间(10秒)
- d.maximize_window() # 最大化窗口
- #goods_sn = 'ECS0001102' #货号
- 14 '''从数据文件中读取测试数据'''
- fp=codecs.open(os.getcwd()+'\\testData.txt','r',encoding='utf-8') #打开测试数据文档
- listData = [] #读取测试数据放到list中
- for item in fp.readlines():
- listData.append(item.rstrip()) #将取出的数据中换行符去掉
- goods_name,goods_sn,cat_id,brand_id,suppliers_id=listData[0],listData[1],listData[2],listData[3],listData[4] #取到的值赋值给变量
- fp.close() #关闭测试数据文档
- d.get(r'http://192.168.7.85:9000/ecshop3/admin')
- time.sleep(3)
- # 登录ecshop
- d.find_element_by_name('username').clear()
- d.find_element_by_name('username').send_keys('admin')
- d.find_element_by_name('password').clear()
- d.find_element_by_name('password').send_keys('admin123456')
- d.find_element_by_class_name('btn-a').click()
- time.sleep(3)
- # 切换到menu-frame
- d.switch_to.frame(d.find_element_by_id('menu-frame'))
- d.find_element_by_link_text('商品列表').click()
- time.sleep(3)
- d.switch_to.default_content()
- d.switch_to.frame(d.find_element_by_id('main-frame'))
- # d.find_element_by_link_text('添加新商品').click()
- d.find_element_by_css_selector('.action-span.btn-add-goods>a').click()
- time.sleep(3)
- # 输入商品信息
- d.find_element_by_name('goods_name').clear()
- d.find_element_by_name('goods_name').send_keys(goods_name)
- d.find_element_by_name('goods_sn').clear()
- d.find_element_by_name('goods_sn').send_keys(goods_sn)
- Select(d.find_element_by_name('cat_id')).select_by_value(cat_id)
- Select(d.find_element_by_name('brand_id')).select_by_visible_text(brand_id)
- Select(d.find_element_by_name('suppliers_id')).select_by_visible_text(suppliers_id)
- d.find_element_by_name('shop_price').clear()
- d.find_element_by_name('shop_price').send_keys('')
- d.find_element_by_name('volume_number[]').clear()
- d.find_element_by_name('volume_number[]').send_keys('')
- d.find_element_by_name('volume_price[]').clear()
- d.find_element_by_name('volume_price[]').send_keys('')
- d.find_element_by_name('virtual_sales').clear()
- d.find_element_by_name('virtual_sales').send_keys('')
- d.find_element_by_id('is_promote').click()
- # 运行JS脚本,删除readonly(只读)元素
- js_start = 'document.getElementById("promote_start_date").removeAttribute("readonly")'
- d.execute_script(js_start)
- # 添加日期
- d.find_element_by_id('promote_start_date').clear()
- d.find_element_by_id('promote_start_date').send_keys('2018-06-01')
- # js字符串
- js_end = 'document.getElementById("promote_end_date").removeAttribute("readonly")'
- # 执行js代码
- d.execute_script(js_end)
- d.find_element_by_id('promote_end_date').clear()
- d.find_element_by_id('promote_end_date').send_keys('2018-07-10')
- # 上传商品图片
- d.find_element_by_name('goods_img').click() #点击浏览按钮,打开选择文件窗口
- time.sleep(2)
- SendKeys.SendKeys('C:\\Users\\Administrator\\Desktop\\123.png')
- SendKeys.SendKeys('{ENTER}')
- time.sleep(2)
- d.find_element_by_css_selector('[class=\'button\'][value=\' 确定 \']').click()
- time.sleep(5)
- # 添加成功,回到商品列表界面
- d.find_element_by_link_text('商品列表').click()
- time.sleep(3)
- # 获取到自身后用..切换到父辈再到子辈
- d.find_element_by_xpath('//span[contains(.,"'+goods_sn+'")]/../../td[12]/a[4]').click()
- time.sleep(2)
- # 切换到alert
- js = d.switch_to.alert
- # 确定
- js.accept()
自动化测试-19.selenium定位之通过JS修改html写入日期数据以及从文本读取数据实战的更多相关文章
- selenium web driver 使用JS修改input属性
selenium获取input时候,发现type=”hidden” 的input无法修改value,经牛人指点,可以使用js修改 首先html源文件如下,设置为text .hidden.submit ...
- VUE 直接通过JS 修改html对象的值导致没有更新到数据中去
业务场景 我们在使用vue 编写 代码时,我们有一个 多行文本框控件,希望在页面点击一个按钮 在 文本框焦点位置插入一个 {pk}的数据. 发现插入 这个数据后,这个数据并没有同步到 数据中,但是直接 ...
- 【自动化测试】Selenium - 定位
http://easonhan007.github.io/selenium/2014/01/10/se-secret_01/ 你应该遵照这个规则来选择定位元素的属性.name > id > ...
- 自动化测试-7.selenium定位一组对象
前言 前面的几篇都是讲如何定位一个元素,有时候一个页面上有多个对象需要操作,如果一个个去定位的话,比较繁琐,这时候就可以定位一组对象. webdriver 提供了定位一组元素的方法,跟前面八种定位方式 ...
- 纯静态界面中(html)中通过js调用dll中的方法从数据库中读取数据
最近接到一个离职员工的任务,一个搭好框架的ERP系统,看了两天,说一下看到的东西,整个项目目录中我没发现一个.aspx后缀的文件,全是静态HTML文件,之后发现他用的jquery简直看的头疼,不过大概 ...
- js ui框架 My97日期控件 富文本编辑器
My97日期控件 http://www.my97.net/dp/index.asp 富文本编辑器 http://www.kindsoft.net/demo.php 百度的magic也不错 http:/ ...
- 《手把手教你》系列技巧篇(四十五)-java+ selenium自动化测试-web页面定位toast-上篇(详解教程)
1.简介 在使用appium写app自动化的时候介绍toast的相关元素的定位,在Web UI测试过程中,也经常遇到一些toast,那么这个toast我们这边如何进行测试呢?今天宏哥就分两篇介绍一下. ...
- 《手把手教你》系列技巧篇(四十六)-java+ selenium自动化测试-web页面定位toast-下篇(详解教程)
1.简介 终于经过宏哥的不懈努力,偶然发现了一个toast的web页面,所以直接就用这个页面来夯实一下,上一篇学过的知识-处理toast元素. 2.安居客 事先声明啊,宏哥没有收他们的广告费啊,纯粹是 ...
- 自动化测试-6.selenium的css定位
前言 大部分人在使用selenium定位元素时,用的是xpath定位,因为xpath基本能解决定位的需求.css定位往往被忽略掉了,其实css定位也有它的价值,css定位更快,语法更简洁.这一篇css ...
随机推荐
- iOS项目之交换方法(runtime)
在项目中,经常会遇到系统自带的方法满足不了自己的需求,往往我们解决这种情况的时候,都是在分类中添加一个方法.然而很多时候,项目已经开发很长时间了,如果一个一个的去替换系统的方法,太浪费宝贵的时间,所以 ...
- HTTP1.0、HTTP1.1 和 HTTP2.0 的区别
一.HTTP的历史 早在 HTTP 建立之初,主要就是为了将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器.也是说对于前端来说,我们所写的HTML页面将要放在我们的 web 服务器上 ...
- Codeforces Round #467 (Div. 2) B. Vile Grasshoppers
2018-03-03 http://codeforces.com/problemset/problem/937/B B. Vile Grasshoppers time limit per test 1 ...
- log4net:ERROR ConfigureFromXml called with null 'element' parameter
场景重现 ASP.NET Core 下集成 log4net 时, 运行时报错如下: log4net:ERROR ConfigureFromXml called with null 'element' ...
- linux基础之awk
gawk - pattern scanning and processing language 基本用法: gawk [options] 'program' FILE... program: PATT ...
- Neo4j 安装插件APOC和GRAPH ALGORITHMS
在 https://github.com/neo4j-contrib/neo4j-apoc-procedures/releases 下载apoc扩展包JAR文件 在 https://github.co ...
- 实体关系图应用——google ads
实体关系 本页展示了 AdWords 实体的关系图,其中的可点击图片可帮助您找到最合适的文档. 表示法图例 实体:链接到相关性最高的指南. 基数:允许的实例数量.例如,1..\* 表示允许一个或多个. ...
- malloc/free 和 new/delete
(本文参考于网上) 首先两者都可用于申请动态内存和释放内存。 对于非内部数据类型的对象而言,只用malloc/free无法满足动态对象的要求.对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执 ...
- python 获取subprocess进程执行后返回值
test.py #coding=utf- import subprocess compilePopen = subprocess.Popen('gcc haha',shell=True,stderr= ...
- 两个python安装模块后 ImportError: No module named
问题描述:我的电脑安装了默认的arcgis自带的python,还自己安装了anaconda,所以有两个位置的python2.7 我自己使用arcgis的程序的时候,调用默认的那些是可以用的,但想使用d ...