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

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


    webdriver 提供了execute_script() 接口用来调用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 的使用。
    隐藏之后的效果如下图:



  • 相关阅读:
    【计算机组成原理】00-开篇词
    【设计模式】05-面向对象四大特性能解决什么问题
    【设计模式】04-面向对象谈了啥
    【设计模式】03-面向对象、设计原则、设计模式、编程规范、重构的关系
    模拟银行业务调度系统逻辑
    模拟交通灯管理系统逻辑设计
    JDK1.5新特性(七)……Annotations
    代理与动态代理
    类加载器
    JDK1.5新特性(六)……Generics
  • 原文地址:https://www.cnblogs.com/jshtest/p/6245719.html
Copyright © 2011-2022 走看看