• selenium-JavaScript的处理


    JavaScript的处理

    在自动化过程中,遇到js处理的元素,需要使用js语言对元素进行操作,例如,滑动到浏览器的底部或者顶部,时间控件的处理,元素可见不可见以及富文本的处理等,都需要js语言的支持,在selenium中,对js脚本的调用方法是execute_script.下面结合实例来讲述。

    元素不可见的操作

    处理方法是用js把隐藏的显示出来,方法如下:
    js="document.getElementById('li').style.display='block';"
    driver.execute_script(js)

    浏览器滑动操作

    以百度搜索为例子,分别操作滑动到底部,滑动到顶部操作,代码如下:
    from selenium import webdriver
    import time

    driver = webdriver.Chrome()
    driver.implicitly_wait(30)
    driver.maximize_window()
    driver.get("http://www.baidu.com")
    driver.find_element_by_id("kw").send_keys("selenium")
    driver.find_element_by_id("su").click()
    time.sleep(4)
    ''' 进行滑动操作,滑动到底部'''
    downjs = "var q=document.documentElement.scrollTop=10000"
    driver.execute_script(downjs)
    ''' 点击下一页,进入到第二页'''
    driver.find_element_by_partial_link_text("下一页").click()
    '''进行滑动操作,滑动到顶部'''
    upjs = "var q=document.documentElement.scrollTop=10000"
    ''' 先执行滑动到底部操作,在滑动到顶部'''
    driver.execute_script(downjs)
    time.sleep(3)
    driver.execute_script(upjs)
    time.sleep(2)
    driver.quit()

    时间控件的处理

    时间控件在测试过程中经常遇到,但大部分时间控件都是只读属性,要实现在只读属性的时间控件输入时间,可以先取消时间控件的只读属性,取消只读属性后,在Input输入框输入value即可,操作代码如下:
    

    from selenium import webdriver
    import time

    driver= webdriver.Chrome()
    def startJs(startTime):
    '''开始时间中输入自定义的时间'''
    js = "$("input[placeholder='开始时间>当前时间']").removerAttr('readonly');"
    "$("input[placeholder='开始时间>当前时间']").attr('value',{0})".format(startTime)
    driver.execute_script(js)

    def endJs(endTime):
    '''结束时间输入自定义的时间'''
    js = "$("input[placeholder='结束时间>当前时间']").removerAttr('readonly');"
    "$("input[placeholder='结束时间>当前时间']").attr('value',{0})".format(endTime)
    driver.execute_script(js)

    startJs("2019-10-10 10:00:00")
    time.sleep(3)
    endJs("2019-10-10 10:02:00")

  • 相关阅读:
    CF85E Guard Towers(二分答案+二分图)
    CF732F Tourist Reform(边双联通)
    CF949C Data Center Maintenance(建图+强联通分量)
    CF402E Strictly Positive Matrix(矩阵,强联通分量)
    CF209C Trails and Glades(欧拉路)
    POJ1201Intervals(差分约束)
    NOIP2016 天天爱跑步(树上差分)
    CF19E Fairy(树上差分)
    NOIP 2017 小凯的疑惑(同余类)
    POJ 3539 Elevator(同余类BFS)
  • 原文地址:https://www.cnblogs.com/qixc/p/11798369.html
Copyright © 2020-2023  润新知