zoukankan      html  css  js  c++  java
  • Selenium实战(二)——调用JavaScript之execute_script()方法

      1.浏览器滚动条的拖动,不能依靠WebDriver提供的API来实现,用于调整浏览器滚动条位置的JavaScript代码如下:

    1 window.scrollTo(0,450);

    window.scrollTo()方法用于设置浏览器窗口滚动条的水平位置和垂直位置,第一个参数表示水平左边距,第二个参数表示垂直上边距。相应的python代码如下:

     1 from selenium import webdriver
     2 from time import sleep
     3 driver = webdriver.Firefox()
     4 driver.set_window_size(800, 600)
     5 driver.get("http://baidu.com")
     6 driver.find_element_by_id("kw").send_keys("selenium")
     7 driver.find_element_by_id("su").click()
     8 sleep(2)
     9 # 通过JavaScript设置浏览器窗口的滚动条位置
    10 js = "window.scrollTo(100,450);"
    11 driver.execute_script(js)
    12 sleep(5)
    13 driver.quit()

    运行之后的结果展示:

    当然,JavaScript的作用不仅仅体现在浏览器滚动条的操作上,还可以在页面中的textarea文本框中输入内容。文本框的HTML代码:

    1 <textarea id="id" style=" 98%" cols="50" rows="5" class="textarea"></textarea>

    相应的python代码:

    1 text = "input text"
    2 js = "document.getElementById('id').value='" + text + "';"
    3 driver.execute_script(js)

    首先定义输入的内容text,然后将text与JavaScript代码通过“+”进行拼接,这样做的目的是为了方便自定义输入内容。

      2.处理HTML5视频播放

      IE9+、Firefox、Opera、Chrome都支持HTML5定义的<video>新元素,下面例子简单自动播放了一段<video>视频:

     1 from selenium import webdriver
     2 from time import sleep
     3 driver = webdriver.Chrome()
     4 driver.set_window_size(800, 600)
     5 
     6 driver.get("http://videojs.com")
     7 sleep(5)
     8 video = driver.find_element_by_id("preview-player_html5_api")
     9 
    10 # 返回播放文件地址
    11 url = driver.execute_script("return arguments[0].currentSrc;", video)
    12 print(url)
    13 
    14 # 播放视频
    15 print("start")
    16 driver.execute_script("arguments[0].play", video)
    17 
    18 # 播放15s
    19 sleep(15)
    20 
    21 # 暂停视频
    22 print("stop")
    23 driver.execute_script("arguments[0].pause()", video)
    24 sleep(5)
    25 driver.quit()

     JavaScript有个内置对象——arguments,包含了函数调用的参数数组,[0]表示取对象的第一个值,currentSrc方法返回当前音视频的URL,若未设置,则返回空字符串。load()、play()、pause()控制视频的加载、播放和暂停。

  • 相关阅读:
    ASP.NET网页动态添加数据行
    动态生成自定义控件ascx如何给ascx传值
    读取txt文件将文本行组合成特定格式
    怎样对文本文件内的文本行排序
    动态变更Repeater控件HeaderTemplate列名
    减少代码冗余,封装你的程序
    在Repeater控件的OnItemDataBound获取数据源记录总数
    查看服务器系统资源(cpu,内容)利用率前几位的进程的方法
    Nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)的部署记录
    gerrit代码简单备份方案分享
  • 原文地址:https://www.cnblogs.com/pegawayatstudying/p/12161333.html
Copyright © 2011-2022 走看看