zoukankan      html  css  js  c++  java
  • python3+selenium入门15-执行JavaScript

    有时有些功能需要通过js来执行,比如拖动浏览器的滚动条。通过execute_script()方法可以执行js的代码

    window.scrollTo()可以传两个参数,第一个参数是下方滚动条的位置,第二个参数是右边滚动条的参数

    from selenium import webdriver
    import time
    dr = webdriver.Firefox()
    dr.get('https://www.baidu.com')
    dr.set_window_size(600,600)#设置浏览器大小,让两个滚动条都显示出来
    dr.find_element_by_id('kw').send_keys('selenium')
    dr.find_element_by_id('su').click()
    time.sleep(2)
    js = "window.scrollTo(100,300)"
    dr.execute_script(js)

    也可以使用一些方法去代替参数 document.body.scrollHeight

    from selenium import webdriver
    import time
    dr = webdriver.Firefox()
    dr.implicitly_wait(10)
    dr.get('https://www.baidu.com')
    dr.find_element_by_id('kw').send_keys('selenium')
    dr.find_element_by_id('su').click()
    time.sleep(2)
    js = "window.scrollTo(0,document.body.scrollHeight)"#滑动到底部
    dr.execute_script(js)

    使用scrollTo()方法可以兼容火狐和谷歌。

    不知道为啥一定要先sleep之后才能成功拖动浏览器滚动条

    dr.execute_script("arguments[0].scrollIntoView();", 某个元素) #拖动到可见的元素去

    如果要操代码内嵌的滚动条,可以先定位滚动条,然后用鼠标事件中拖放功能去操作。

    很多js功能都可以通过execute_script()方法俩执行,比如有些元素的点击会触发js事件,就需要用js的点击来执行。

    js = 'document.getElementByClassName("classname")[0].click()'
    driver.execute.script(js)

    上面ClassName也可以换成id或name的方式。但是需要注意的是ClassName返回的是一个数组。需要加上下标选择。id和name是不需要下标的。

  • 相关阅读:
    Python【第三方模块&标准模块】
    Python【读写Json文件】
    python【内置函数&自定义函数】
    python【文件操作:读写文件】
    python【数据类型:列表与元组】
    QTP自传之录制
    测试工作杂谈
    心魔
    QTP自传之初识
    ActionScript学习笔记(七)——缓动和弹性运动
  • 原文地址:https://www.cnblogs.com/myal/p/9401752.html
Copyright © 2011-2022 走看看