• 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是不需要下标的。

  • 相关阅读:
    C# 日期格式化的中的 正斜杠的问题
    JQuery中如何click中传递参数
    《启示录:打造用户喜爱的产品》—— 读书笔记
    json串的使用
    谷歌浏览器怎么调试js
    web页面布局思想
    js或者cs代码拼接html
    筛选DataTable数据的方法
    Ajax的简单小例子
    简单的javascript例子
  • 原文地址:https://www.cnblogs.com/myal/p/9401752.html
Copyright © 2020-2023  润新知