自动化测试-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("我是代码块 ...
随机推荐
- php导出大数据scv
1.我系统要导出30w的数据,刚开始我使用的是: ini_set('memory_limit', '1024M');set_time_limit(0); header("Content-ty ...
- jps报process information unavailable的解决办法
现象 启动Hadoop的时候使用jps检查进程 ,出现Process information unavailable的问题,如下 [root@vm8033 local]# jps -- process ...
- ActiveMQ queue和topic,持久订阅和非持久订阅
消息的 destination 分为 queue 和 topic,而消费者称为 subscriber(订阅者).queue 中的消息只会发送给一个订阅者,而 topic 的消息,会发送给每一个订阅者. ...
- JDK安装教程(Windows7 x64)
1.下载JDK http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 选择自己系统相对 ...
- Qt 之 去除窗口部件被选中后的焦点虚线框
转自: https://blog.csdn.net/goforwardtostep/article/details/53420529 https://blog.csdn.net/caoshangpa/ ...
- SpringBoot鸡汤(注解集合)
1.(ConfigBean.java :是一个带有属性的bean类) @Configuration @ConfigurationProperties(prefix = “com.md”) @Prope ...
- charles抓包工具使用方法
注意: 1.软件安装证书,移动端安装证书: 2.设置SSL proxying setting: 3.设置Map Remote: 这里主要是为了设置移动端代理服务器,让其重定向到想要连接的环境上,比如手 ...
- react之传递数据的几种方式props传值、路由传值、状态提升、redux、context
react之传递数据的几种方式 1.父子传值 父传值:<子的标签 value={'aaa'} index={'bbb'}></子的标签> 子接值:<li key={thi ...
- 1-3Controller之Response
控制器中的方法: public function response1(){ /*响应的常见类型: * 1.字符串 * 2.视图 * 3.json * 4.重定向 * */ //响应JSON /*$da ...
- JS&Jquery中的循环/遍历
JavaScript中的遍历 for 遍历 var anArray = ['one','two']; for(var n = 0; n < anArray.length; n++) { //具体 ...