zoukankan      html  css  js  c++  java
  • python selenium-webdriver 执行js (八)

    使用python selenium 做自动化测试的时候其实我基本没有使用过执行js,只是在后来使用selenium来爬虫的时候使用到了,所以我在这里也就拿出来简单的介绍一下如何执行js。

    • execute_script 方法定义:

      

    • 因为比较简单所以我就不会太特别的细致介绍,所以我们看一个简单的例子
    #-*- coding:utf-8 -*-
    from selenium import webdriver
    import time
    driver = webdriver.Chrome()
    js = 'alert("我是一个消息框!")'   #这里我定义一个js alert 弹出框
    driver.execute_script(js)  #这里执行下上面的js,很简单把定义好的js直接传入即可。
    time.sleep(3)
    driver.switch_to_alert().accept()  #之前我们学习过如何处理alert对话框,所以学以致用,这里利用他在处理一下
    time.sleep(2)
    driver.quit()

    重点来啦!!!

       这里我们讲一个实际的应用,通过操作js来控制滚动条,滚动条的操作就是依靠了js。

    #-*- coding:utf-8 -*-
    
    '''由于浏览器的兼容性,所以我这边增加了判断,Chrome比较特殊'''
    # 滚动到底部
    def Execute_Js_Scroll_Top():
        if driver.name == "chrome":  #获取浏览器名称
           js = "var q=document.body.scrollTop=0"   
        else:
            js = "var q=document.documentElement.scrollTop=0"
        return driver.execute_script(js)
    # 滚动底部
    def Execute_Js_scroll_Foot():
        if driver.name == "chrome":  #获取浏览器名称
            js = "var q=document.body.scrollTop=10000"
        else:
            js = "var q=document.documentElement.scrollTop=10000"
        return driver.execute_script(js)
    
    
    #----------------演示滚动操作----------------------
    
    import time
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    driver = webdriver.Chrome()
    driver.maximize_window()
    driver.get("http://cn.bing.com")
    driver.find_element_by_id('sb_form_q').send_keys('selenium')
    driver.find_element_by_id('sb_form_go').send_keys(Keys.ENTER)
    time.sleep(2) #观察效果
    Execute_Js_scroll_Foot()  #首先我们滚动到底部
    time.sleep(2) #观察效果
    Execute_Js_Scroll_Top()   #再次滚动到顶部
    time.sleep(2) #观察效果
    driver.quit()

    看下效果,我们已经对滚动条从上拉动到下,然后再次拉上来。

  • 相关阅读:
    如何将网格式报表打印成其它样式
    拥有与实力不相称的脾气是种灾难——北漂18年(23)
    8.8.1 Optimizing Queries with EXPLAIN
    mysql 没有rowid 怎么实现根据rowid回表呢?
    secondary index
    8.5.5 Bulk Data Loading for InnoDB Tables 批量数据加载
    mysql 中key 指的是索引
    8.5.4 Optimizing InnoDB Redo Logging 优化InnoDB Redo 日志
    8.5.3 Optimizing InnoDB Read-Only Transactions 优化InnoDB 只读事务
    8.5.1 Optimizing Storage Layout for InnoDB Tables InnoDB表的存储布局优化
  • 原文地址:https://www.cnblogs.com/mengyu/p/7018627.html
Copyright © 2011-2022 走看看