zoukankan      html  css  js  c++  java
  • 自动化测试-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来拖动滚动条滚动到具体位置

    1 js_="window.scrollTo(400,700);"  
    2 driver.execute_script(js_)  

    3.针对js  非div 元素的 alert 弹出事件 可以用:

    1 from selenium.webdriver import ActionChains  
    2 alert = driver.switch_to_alert()  
    3 #模拟键盘Enter 键  
    4 ActionChains(driver).send_keys(Keys.ENTER).perform()  

    4.用来选择日期控件,输入框

    1 js="$('#SystemDate').val('2017-07-21');"    
    2 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
    '''

    1 js="document.getElementById('promote_start_date').removeAttribute('readonly')" 2 driver.execute_script(js) 3 driver.find_element_by_id('promote_start_date').clear() 4 # 填写促销日期(promote_start_date)为日期控件的id 5 driver.find_element_by_id('promote_start_date').send_keys('1996-05-25')

    6.工作中持续更新使用到的JS脚本

  • 相关阅读:
    react的CSS中 :global的含义
    TypeScript中的问号 ? 与感叹号 ! 的含义
    移动端1px问题的解决方案
    原生js实现call,apply以及bind
    哪些场景不能使用箭头函数
    线性渐变、径向渐变以及圆锥渐变
    vue 开发中实现provide和inject实现依赖注入
    inline-block元素去除间隙
    clientWidth、offsetWidth、scrollWidth的区别
    session、token和cookie
  • 原文地址:https://www.cnblogs.com/cmnz/p/9099473.html
Copyright © 2011-2022 走看看