• 调用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的使用。

    隐藏之后的效果如图:

  • 相关阅读:
    SpirngBoot整合Mybatis Plus多数据源
    SpringBoot整合EasyPoi 封装Excel导出通用工具类,行高自适应,导出图片
    阿里云服务器安装Docker Compose
    设置Docker容器里的时间
    坏代码导致的性能问题大赏:CPU占用飙到了900%!
    Java程序员涨薪必备的性能调优知识点,收好了!
    SprinMvc快速入门
    python中文乱码问题
    python中自定义函数类的引用(最全)
    datax
  • 原文地址:https://www.cnblogs.com/zhang-jun-jie/p/9313851.html
Copyright © 2020-2023  润新知