zoukankan      html  css  js  c++  java
  • Selenium with Python 005

    WebDriver提供了execute_script()方法来执行JavaScript方法,格式如 driver.execute_script(script,*args)

    执行js一般有两种场景,一是在页面中直接执行js,二是在某个已经定位的元素上执行js

    通过js操作页面元素

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <title>webdriver 调用js操作元素</title>
        <meta charset="UTF-8">
        <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css"
              rel="stylesheet"/>
        <style>
            .modal-dialog {
                position: absolute;
                top: 0;
                bottom: 0;
                left: 0;
                right: 0;
            }
    
            .modal-content {
                /*overflow-y: scroll; */
                position: absolute;
                top: 0;
                bottom: 0;
                width: 100%;
            }
    
            .modal-body {
                overflow-y: scroll;
                position: absolute;
                top: 55px;
                bottom: 65px;
                width: 100%;
            }
    
            .modal-header .close {
                margin-right: 15px;
            }
    
            .modal-footer {
                position: absolute;
                width: 100%;
                bottom: 0;
            }
        </style>
    </head>
    <body>
    <h3 class="text-info">webdriver 调用js操作元素</h3>
    <div class="row-fluid well">
        <a id="btn1">Button1</a>
        <a id="btn2" class="btn" onclick="alert('Button2 click trigger...');">Button2</a>
    </div>
    <div class="row-fluid well">
        <input type="text" id="username">
    
    </div>
    <!-- Button trigger modal -->
    <button type="button" id="btn_myModal" class="btn btn-primary btn-lg "
            data-toggle="modal"
            data-target="#myModal">
        模态框滚动条
    </button>
    <div class="row-fluid well">
        <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
            <li>6</li>
            <li>7</li>
            <li>8</li>
            <li>9</li>
            <li>10</li>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
            <li>6</li>
            <li>7</li>
            <li>8</li>
            <li>9</li>
            <li>10</li>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
            <li>6</li>
            <li>7</li>
            <li>8</li>
            <li>9</li>
            <li>10</li>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
            <li>6</li>
            <li>7</li>
            <li>8</li>
            <li>9</li>
            <li>10</li>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
            <li>6</li>
            <li>7</li>
            <li>8</li>
            <li>9</li>
            <li>10</li>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
            <li>6</li>
            <li>7</li>
            <li>8</li>
            <li>9</li>
            <li>10</li>
    
    
        </ul>
    
    </div>
    
    
    <!-- Modal -->
    <div class="modal fade myModal" id="myModal" tabindex="-1" role="dialog"
         aria-labelledby="myModalLabel">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal"
                            aria-label="Close"><span
                            aria-hidden="true">&times;</span></button>
                    <h4 class="modal-title" id="myModalLabel">Modal title</h4>
                </div>
                <div class="modal-body">
                    <p>
                        Text in a modal
                    </p>
                    <ul>
                        <li>1</li>
                        <li>2</li>
                        <li>3</li>
                        <li>4</li>
                        <li>5</li>
                        <li>6</li>
                        <li>7</li>
                        <li>8</li>
                        <li>9</li>
                        <li>10</li>
                        <li>1</li>
                        <li>2</li>
                        <li>3</li>
                        <li>4</li>
                        <li>5</li>
                        <li>6</li>
                        <li>7</li>
                        <li>8</li>
                        <li>9</li>
                        <li>10</li>
                        <li>1</li>
                        <li>2</li>
                        <li>3</li>
                        <li>4</li>
                        <li>5</li>
                        <li>6</li>
                        <li>7</li>
                        <li>8</li>
                        <li>9</li>
                        <li>10</li>
                        <li>1</li>
                        <li>2</li>
                        <li>3</li>
                        <li>4</li>
                        <li>5</li>
                        <li>6</li>
                        <li>7</li>
                        <li>8</li>
                        <li>9</li>
                        <li>10</li>
                        <li>1</li>
                        <li>2</li>
                        <li>3</li>
                        <li>4</li>
                        <li>5</li>
                        <li>6</li>
                        <li>7</li>
                        <li>8</li>
                        <li>9</li>
                        <li>10</li>
                        <li>1</li>
                        <li>2</li>
                        <li>3</li>
                        <li>4</li>
                        <li>5</li>
                        <li>6</li>
                        <li>7</li>
                        <li>8</li>
                        <li>9</li>
                        <li>10</li>
    
    
                    </ul>
    
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default"
                            data-dismiss="modal">Close
                    </button>
                    <button type="button" class="btn btn-primary">Save changes
                    </button>
                </div>
            </div>
        </div>
    </div>
    </body>
    <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
    <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <html>
    #!/usr/bin/env python 
    # -*- coding: utf-8 -*-
    
    from selenium import webdriver
    import os
    import time
    
    driver = webdriver.Chrome()
    file_path = 'file:///' + os.path.abspath("demo.html")
    driver.get(file_path)
    time.sleep(2)
    
    #######在页面中直接执行js#################
    driver.execute_script('$("#btn1").fadeOut();')
    time.sleep(2)
    
    #######在某个已经定位的元素上执行js########
    button = driver.find_element_by_class_name('btn')
    driver.execute_script('$(arguments[0]).click()', button)
    time.sleep(2)
    driver.switch_to.alert.accept()
    time.sleep(2)
    
    #################调用js代码##############
    js = "var q=document.getElementById('username');q.style.border='1px solid red';q.value='PTQA TEST' "
    driver.execute_script(js)
    time.sleep(2)
    js2 = "alert(666);"
    driver.execute_script(js2)
    time.sleep(2)
    driver.switch_to.alert.accept()
    time.sleep(2)
    
    ######Jquery控制浏览器内嵌div的滚动条 ####
    driver.find_element_by_id('btn_myModal').click()
    time.sleep(2)
    js3 = '$(".modal-body").scrollTop(10000)'
    driver.execute_script(js3)
    time.sleep(2)
    driver.find_element_by_css_selector('button.close').click()
    time.sleep(2)
    
    ##########Jquery控制浏览器的滚动条 ######
    js4 = '$(document).scrollTop(1000)'
    driver.execute_script(js4)
    time.sleep(5)
    
    driver.close()

    滚动到页面底部也可以这样

    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

    ***微信扫一扫,关注“python测试开发圈”,了解更多测试教程!***
  • 相关阅读:
    一个网络扫描程序
    ASCII
    一个linux下c++程序
    VC数字图像处理编程
    人际关系的55个绝招
    一些函数
    【转】Vim命令合集以及乱码问题解决
    【转】PHP程序员的技术成长规划
    【转】Nginx 服务器安装及配置文件详解
    【转】PHP网站常见安全漏洞,及相应防范措施总结
  • 原文地址:https://www.cnblogs.com/guanfuchang/p/7462641.html
Copyright © 2011-2022 走看看