zoukankan      html  css  js  c++  java
  • 调用JavaScript

    当 webdriver 遇到没法完成的操作时,笔者可以考虑借用 JavaScript 来完成,比下下面的例子通过 JavaScript 来隐藏页面上的元素。除了完成 webdriver 无法完成的操作,如果你熟悉 JavaScript的话,那么使用 webdriver 执行 JavaScript 是一件非常高效的事情。

    webdriver 提供了 execute_script() 接口用来调用 js 代码。

    js.html

    <html>
    <head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <title>js</title>
    <script type="text/javascript" async=""
    src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css"
    rel="stylesheet" />
    <script type="text/javascript">
    $(document).ready(function(){
    $('#tooltip').tooltip({"placement": "right"});
    });
    </script>
    </head>
    <body>
    <h3>js</h3>
    <div class="row-fluid">
    <div class="span6 well">
    <a id="tooltip" href="#" data-toggle="tooltip" title=" selenium-webdriver(python)">hover to see
    tooltip</a>
    <a class="btn">Button</a>
    </div>
    </div>
    </body>
    <script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
    </html>

    保存 js.html 文件并通过浏览器打开

    执行js一般有两种场景

    • 一种是在页面上直接执行 JS
    • 另一种是在某个已经定位的元素上执行 JS
    #coding=utf-8
    from selenium import webdriver
    import time,os
    driver = webdriver.Firefox()
    file_path = 'file:///' + os.path.abspath('js.html')
    driver.get(file_path)
    #######通过 JS 隐藏选中的元素##########第一种方法:
    #隐藏文字信息
    driver.execute_script('$("#tooltip").fadeOut();')
    time.sleep(5)
    #隐藏按钮:
    button = driver.find_element_by_class_name('btn')
    driver.execute_script('$(arguments[0]).fadeOut()',button)
    time.sleep(5)
    driver.quit()

    execute_script(script, *args)

    在当前窗口/框架 同步执行 javaScript

    script:JavaScript 的执行。

    *args:适用任何 JavaScript 脚本

    关于JavaScript代码的解析不在本书的范围之内,请读者通过其它资料学习理解JavaScript的使用。

    隐藏之后的效果如图:

  • 相关阅读:
    vc++ 最小化到托盘的详细实现
    WS_CLIPCHILDREN和WS_CLIPSIBLINGS的理解(转载)
    windows 进程间通讯方法
    C++中各种数据量类型转换
    WTL 自绘 进度条Progressbar
    C++ 读取XML文件(tinyXML库的应用)
    WTL 自定义 Button类-自绘
    设计模式课程 设计模式精讲 27-3 状态模式源码解析
    设计模式课程 设计模式精讲 27-2 状态模式coding
    设计模式课程 设计模式精讲 26-3 访问者模式源码解析
  • 原文地址:https://www.cnblogs.com/zhang-jun-jie/p/9313851.html
Copyright © 2011-2022 走看看