• Selenium学习笔记之009:执行JS代码 分类: Selenium 2015-07-22 00:06 9人阅读 评论(0) 收藏


    UI自动化离不开前端技术。JS可以做selenium 做不到的事情,但是在什么样的自动化的时候才能(或必须)要JS帮忙,我还没遇到过。不过JS可以selenium完成更强大的功能,这是不容置疑的。的同学可以自己补充下相关知识: http://www.w3school.com.cn/js/index.asp


    调用JS方法:

    execute_script(script, *args)

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

    脚本:JavaScript的执行。

    *参数:适用任何JavaScript脚本。

    使用:

    driver.execute_script(‘document.title’)

    使快播登陆用户名输入框标红显示

    <span style="font-size:12px;">#coding=utf-8
    from selenium import webdriver
    import time
    
    driver = webdriver.Firefox()
    driver.get("http://passport.kuaibo.com/login/?referrer=http%3A%2F%2Fvod.kuaibo.com%2F%3Ft%3Dhome")
    
    #给用户名的输入框标红
    js="var q=document.getElementById("user_name");q.style.border="1px solid red";"
    #调用js
    driver.execute_script(js)
    time.sleep(3)
    
    driver.find_element_by_id("user_name").send_keys("username")
    driver.find_element_by_id("user_pwd").send_keys("password")
    driver.find_element_by_id("dl_an_submit").click()
    time.sleep(3)
    
    driver.quit()</span>

    JS解释:

    q=document.getElementById("user_name")

    元素qid user_name

    q.style.border="1px solid red

    元素q的样式,边框为1个像素红色


    隐藏元素

    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>

    (保持html文件与执行脚本在同一目录下)


     执行js一般有两种场景:

    • 一种是在页面上直接执行JS
    • 另一种是在某个已经定位的元素上执行JS
    <span style="font-size:12px;">#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()</span>

    JS解释:

    arguments对象,它是调用对象的一个特殊属性,用来引用Arguments对象。Arugments对象就像数组

    fadeOut() 方法使用淡出效果来隐藏被选元素,假如该元素是隐藏的。



    本文部分参考虫师webdriver文档。

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    设计模式的原则和法则
    GoF的23种设计模式分类和功能
    2020年智慧电力解决方案
    【转载】「黑科技」智能防疫消毒机器人 技术方案介绍-disinfection robot
    【转载】如何让电力巡检机器人项目落地
    30多张图来了解Keil5的使用
    [数学学习与代码]最小二乘法--多元线性方程求解
    MTK-LCM 屏幕使用fbconfig/PanelMaster来调试LCM驱动
    MTK 使用iptable 命令来完成网络路由(android WIFI/4G分享网络)
    MTK(android init.rc) 写一个开机启动的服务
  • 原文地址:https://www.cnblogs.com/haixianglan/p/4678041.html
Copyright © 2020-2023  润新知