前言:

  在工作中有些控件定位不到,需要操作,使用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代码执行的更多相关文章

  1. js代码执行顺序问题

      前  言 LiuDaP 今天就给大家介绍一个特别基础的东西,javascript中函数的一点儿小知识(js代码的执行顺序),希望对大家有那么一点点帮助吧!!! 一.js--->单线程 严格意 ...

  2. [js]js代码执行顺序/全局&私有变量/作用域链/闭包

    js代码执行顺序/全局&私有变量/作用域链 <script> /* 浏览器提供全局作用域(js执行环境)(栈内存) --> 1,预解释(仅带var的可以): 声明+定义 1. ...

  3. xss 防止攻击,恶意用户将输入的信息当成html或js代码执行,办法是将用户输入的信息改为text格式,或特殊符号转义

    xss 防止攻击,恶意用户将输入的信息当成html或js代码执行,办法是将用户输入的信息改为text格式,或特殊符号转义 XSS攻击的防范 XSS攻击造成的危害之所以会发生,是因为用户的输入变成了可执 ...

  4. 常用JS代码片段

    1.隐藏部分数字,如手机号码,身份证号码 1 2 3 function (str,start,length,mask_char){ return str.replace(str.substr(star ...

  5. 站长常用的200个js代码 站长常用js代码大全 站长常用js代码集合

    站长常用的200个js代码 1.文本框焦点问题 onBlur:当失去输入焦点后产生该事件 onFocus:当输入获得焦点后,产生该文件 Onchange:当文字值改变时,产生该事件 Onselect: ...

  6. 把字符串当做js代码执行的方法

    字符串还能当做javascript代码来执行?你能想到哪些方法? 1.setInterval("要执行的字符串",500);window对象的方法既可以传字符串,也可以传函数.该函 ...

  7. 常用js代码整理、收集

    个人整理了一下个人常用到的一些js代码,以方便学习以及日后使用,或许有一些是个人之前从网上摘下来的,但是不记得是具体从哪里来的了,如果你看到有一段代码跟你的文章很相似甚至一样,请不要气愤,请告诉我,我 ...

  8. JSCover+WebDriver/Selenium获得JS 代码覆盖

    我们看JSCover(http://tntim96.github.io/JSCover/manual/manual.xml)介绍及使用说明的时候,往往被图形界面所吸引.这样的方式比較适合手工操作,点击 ...

  9. 关于js代码执行顺序

    上网查了一下关于这个方面的资料,大部分都是关于两个script标签中的js代码和变量以及函数提升方面的知识. 1.两个script标签 <script> alert("我是代码块 ...

随机推荐

  1. 四则运算web最终版

    经过若干时间的奋战,终于完成了web版四则运算程序.团队成员:井小普.张贺. 设计思想: 在之前的程序基础上两人结合开发web系统. 首先,进行登录注册界面的编写,不同用户,对应不同的错题库,答题记录 ...

  2. ADG配置(主备库环境)

    @font-face { font-family: "Courier New"; }@font-face { font-family: "宋体"; }@font ...

  3. jquery 学习(一):jQuery 简介

    jQuery 库 - 特性: jQuery 是一个 JavaScript 函数库. jQuery 库包含以下特性: html 元素获取, html 元素操作, css 操作, html 事件函数, J ...

  4. Miniconda安装scrapy教程

    一.背景说明 前两天想重新研究下Scrapy,当时的环境是PyCharm社区版+Python 3.7.使用pip安装一直报错 “distutils.errors.DistutilsPlatformEr ...

  5. suffix word ality ally an ancy ance an aneity out ~1

    1● ality 状态,性质   2● ally al+ly ~地   3● an ~地方 ,~人       1★ ance=ancy 性质 ,状态   2★ant ~人,~剂,~的   3★ an ...

  6. 交互式shell编程

    FQ #!/usr/bin/env shxfce4-terminal -x sudo python ./local/proxy.py 连续执行 gnome-terminal -x bash -c &q ...

  7. php读取excel时间42930转化为时间然后正则验证时间是否通过

    excel时间 function exceltimtetophp($days,$time=false) { if(is_numeric($days)) { //凯撒日计数,要把我们运用的从1970年开 ...

  8. 尚学堂java 参考答案 第八章

    一.选择题 1.BD 解析:B:Integer是对象,所以默认的应该是null对象.D使用的是自动装箱 2.A 解析:String类的对象是final型,是不能修改的,concat()方法是生成一个新 ...

  9. 利用VisualVm和JMX远程监控Java进程

    自Java 6开始,Java程序启动时都会在JVM内部启动一个JMX agent,JMX agent会启动一个MBean server组件,把MBeans(Java平台标准的MBean + 你自己创建 ...

  10. 每天CSS学习之transform-origin

    在上一篇中,我们学习了如何使用transform来进行2D变形.今天要讲述的transform-origin与这个变形有关. origin翻译过来的意思是原点.开端.transform-origin寓 ...