• python+selenium十一:jQuery和js语法、js处理iframe


    python+selenium十一:jQuery和js语法、js处理iframe

     
    selenium 执行jQuery/js语法
    driver.execute_script(jQuery/js)

    1、jQuery

    jQuery只支持css语法:

    jquery = '$(CSS).val("XXX");'   # 根据css语法定位到元素,输入内容
    jquery = '$(CSS).val('');' # 清空
    jquery = '$(CSS).click();' # 点击

    # 在某个已经定位的元素上执行 jquery

    button = driver.find_element_by_class_name('btn')

    driver.execute_script('$(arguments[0]).click()', button)

     

    # Jquery控制浏览器内嵌div的滚动条 

    Jquery = '$(".modal-body").scrollTop(10000)'

    driver.execute_script(Jquery)

    
    

    # Jquery控制浏览器的滚动条 

    Jquery = '$(document).scrollTop(1000)'

    driver.execute_script(Jquery)

     

    2、js

    1.通过id获取 document.getElementById(“id”)----------获取的是单个

    2.通过name获取 document.getElementsByName(“Name”)[0]---------获取的是多个   返回的是list

    3.通过标签名选取元素 document.getElementsByTagName(“tag”) --------获取的是多个

    4.通过CLASS类选取元素 document.getElementsByClassName(“class”) --------获取的是多个 兼容性:IE8及其以下版本的浏览器未实现getElementsByClassName方法

    5.通过CSS选择器选取元素 document.querySelectorAll(“css selector") 兼容性:IE8及其以下版本的浏览器只支持CSS2标准的选择器语法

    js = 'document.getElementById(xxx).value="XXXX"'      # 输入值

    js = 'document.getElementsByClassName("prefpanelgo")[0].click();'  # 点击

    # 去掉元素的readonly属性

    js = 'document.getElementById("xxx").removeAttribute("readonly");'

    driver.execute_script(js)

    # 把元素不可见属性改为可见

    js = "document.getElementsByClassName('password')[0].style.display='block'"

    driver.execute_script(js)

    # 去掉日期控件的readonly属性,并填入日期

    js = 'document.getElementById(xxx).removeAttribute("readonly");document.getElementById(xxx).value="20xx-xx-xx"'

    driver.execute_script(js)

    jquery = '$("#train_date").val("");$("#train_date").val("20xx-xx-xx");$("#query_ticket").click()'

    driver.execute_script(jquery)

    # 聚焦元素

    target = self.find_element(locator)

    driver.execute_script("arguments[0].scrollIntoView();", target)

    内嵌滚动条:

    # 纵向底部

    # 获取id是单个元素,因为一个页面上id是唯一的

    #js = 'document.getElementById("XXXX").scrollTop=10000'

    # 获取的class是多个,取list的第一个对象

    # 顶部:scrollTop=0,底部:scrollTop=10000

    js0 = 'document.getElementsByClassName("scroll")[0].scrollTop=10000'

    driver.execute_script(js0)

    # 控制横向滚动条位置

    # 最左边:scrollLeft=0,最右边:scrollLeft=10000

    js1 = 'document.getElementsByClassName("scroll")[0].scrollLeft=10000'

    driver.execute_script(js1)

    # js处理iframe

    # Js处理iframe无需先切换到iframe上,再切回来操作。 它可以在iframe上和主页面上来回自由操作-----这是Js的强大之处

    js = 'document.getElementById("Editor_Edit_EditorBody_ifr").contentWindow.document.body.innerHTML="%s"' % jstext

    driver.execute_script(js)

    # innerHTML:插入html文本内容

    # 以上js写法只是专门处理富文本(有iframe)相关的问题,其它地方遇到iframe不一定通用

  • 相关阅读:
    org.dom4j.DocumentException: Error on line 1 of document: 前言中不允许有内容
    学习过程中的随手笔记
    IT技术团队行而有效的管理之道
    九宫格抽奖HTML+JS版
    Nginx负载均衡深入浅出
    PHP 二维数组根据某个字段排序
    MYSQL INSERT INTO SELECT 不插入重复数据
    小米2成功使用google组件的办法(为了coc游戏能登录google账户)
    PHP 数组排序方法总结
    普通标和转让标的回款和还款日期的算法。
  • 原文地址:https://www.cnblogs.com/dwdw/p/9998656.html
Copyright © 2020-2023  润新知