自动化测试-20.selenium常用JS代码执行
前言:
在工作中有些控件定位不到,需要操作,使用JS代码去修改或者操作达到selenium不能做的操作。
1.Web界面的滑动
1 #coding:utf-8
2 from selenium import webdriver
3 import time
4
5 d = webdriver.Firefox()
6 d.implicitly_wait(10)
7 d.maximize_window()
8 d.get(r'https://www.tmall.com/')
9 time.sleep(10)
10 # 用JS获取HTML元素焦点,滚动条就自动滑动到焦点所在位置
11 # .mui-mbar-tab.mui-mbar-tab-cart.mui-mbar-tab-cart-nologin>div:nth-child(2)
12 # 查找class属性值为"mui-mbar-tab mui-mbar-tab-cart mui-mbar-tab-cart-nologin"的元素下的第二个div元素
13 ele = d.find_element_by_css_selector('.mui-mbar-tab.mui-mbar-tab-cart.mui-mbar-tab-cart-nologin>div:nth-child(2)')
14 #print ele.text
15 # 获取一个焦点
16 js = "arguments[0].scrollIntoView();"
17 # 获取ele元素所在的位置焦点,滚动条会自动的滑动到获取的焦点位置
18 d.execute_script(js,ele)
2.js来拖动滚动条滚动到具体位置
js_="window.scrollTo(400,700);"
driver.execute_script(js_)
3.针对js 非div 元素的 alert 弹出事件 可以用:
from selenium.webdriver import ActionChains
alert = driver.switch_to_alert()
#模拟键盘Enter 键
ActionChains(driver).send_keys(Keys.ENTER).perform()
4.用来选择日期控件,输入框
js="$('#SystemDate').val('2017-07-21');"
driver.execute_script(js
5.Python执行js删除HTML元素的属性值
'''
1. 删除属性值:document.getElementById('promote_start_date').removeAttribute('readonly')
2. 添加/修改属性值:document.getElementById("p1").readonly=false
JS定位元素的方法:document.getElementById/getElementByName/getElementByClassName/getElementByTagName
''' js="document.getElementById('promote_start_date').removeAttribute('readonly')"
driver.execute_script(js)
driver.find_element_by_id('promote_start_date').clear()
# 填写促销日期(promote_start_date)为日期控件的id
driver.find_element_by_id('promote_start_date').send_keys('1996-05-25')
6.工作中持续更新使用到的JS脚本
自动化测试-20.selenium常用JS代码执行的更多相关文章
- js代码执行顺序问题
前 言 LiuDaP 今天就给大家介绍一个特别基础的东西,javascript中函数的一点儿小知识(js代码的执行顺序),希望对大家有那么一点点帮助吧!!! 一.js--->单线程 严格意 ...
- [js]js代码执行顺序/全局&私有变量/作用域链/闭包
js代码执行顺序/全局&私有变量/作用域链 <script> /* 浏览器提供全局作用域(js执行环境)(栈内存) --> 1,预解释(仅带var的可以): 声明+定义 1. ...
- xss 防止攻击,恶意用户将输入的信息当成html或js代码执行,办法是将用户输入的信息改为text格式,或特殊符号转义
xss 防止攻击,恶意用户将输入的信息当成html或js代码执行,办法是将用户输入的信息改为text格式,或特殊符号转义 XSS攻击的防范 XSS攻击造成的危害之所以会发生,是因为用户的输入变成了可执 ...
- 常用JS代码片段
1.隐藏部分数字,如手机号码,身份证号码 1 2 3 function (str,start,length,mask_char){ return str.replace(str.substr(star ...
- 站长常用的200个js代码 站长常用js代码大全 站长常用js代码集合
站长常用的200个js代码 1.文本框焦点问题 onBlur:当失去输入焦点后产生该事件 onFocus:当输入获得焦点后,产生该文件 Onchange:当文字值改变时,产生该事件 Onselect: ...
- 把字符串当做js代码执行的方法
字符串还能当做javascript代码来执行?你能想到哪些方法? 1.setInterval("要执行的字符串",500);window对象的方法既可以传字符串,也可以传函数.该函 ...
- 常用js代码整理、收集
个人整理了一下个人常用到的一些js代码,以方便学习以及日后使用,或许有一些是个人之前从网上摘下来的,但是不记得是具体从哪里来的了,如果你看到有一段代码跟你的文章很相似甚至一样,请不要气愤,请告诉我,我 ...
- JSCover+WebDriver/Selenium获得JS
代码覆盖
我们看JSCover(http://tntim96.github.io/JSCover/manual/manual.xml)介绍及使用说明的时候,往往被图形界面所吸引.这样的方式比較适合手工操作,点击 ...
- 关于js代码执行顺序
上网查了一下关于这个方面的资料,大部分都是关于两个script标签中的js代码和变量以及函数提升方面的知识. 1.两个script标签 <script> alert("我是代码块 ...
随机推荐
- js动态检测加载 JQ
var jqcdnurl = 'https://cdn.bootcss.com/jquery/3.2.1/jquery.js'; //控制台输出 function log() { for (var i ...
- MongoDB文档的基本操作
1. MongoDB的安装方法 (1)下载MongoDB 相应的版本: (2)设置数据文件和日志文件的存放目录: (3)启动MongoDB服务: (4)将MongoDB作为服务启动. 2. Mongo ...
- rpc框架实现(持续更新)
网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,rpc基于长连接的远程过程调用应用而生. 一:A服务调用B服务,整个调用过程,主要经历如下几个步骤:(摘自 ...
- loj 10117 简单题(cqoi 2006)
题目来源:CQOI 2006 有一个 n 个元素的数组,每个元素初始均为 0.有 m条指令,要么让其中一段连续序列数字反转——0变 1,1 变 0(操作 1),要么询问某个元素的值(操作 2). 例如 ...
- python 怎样使用单个反斜杠\
path2 = "c:\\windows\\temp\\readme.txt" path2:用一个"\"取消第二个"\"的特殊转义作用,即为 ...
- pycuda安装 python<3.0
cd pycudapython ./configure.py –cuda-root=/usr/local/cuda –cudadrv-lib-dir=/usr/lib –boost-inc-dir=/ ...
- ubuntu启用root登陆
ubuntu系统不能够默认以root用户登陆系统如果你为了方便开发想每次登陆的时候以root用户登陆那么需要手动的做写更改打开终端 首先输入命令 sudo passwd root更新你的密码然后输入 ...
- Laravel 更新数据时在表单请求验证中排除自己,检查指定字段唯一性
原文地址:https://moell.cn/article/24 不错的laravel网站 需求场景 修改用户信息时,在表单请求验证中排除当前邮箱所在的记录行,并检查邮箱的唯一性. Laravel版本 ...
- 1-1Controller之Request
laravel5.5版本 //路由: Route::any('request1',['uses'=>'StudentController@request1']); //控制器中的方法: publ ...
- redis客户端windows版中文乱码解决方案
1.在cmd窗口,在redis-cli.exe 后加上--raw 2.修改cmd窗口编码 http://jingyan.baidu.com/article/e75aca85440f01142edac6 ...