Selenium实战(二)——调用JavaScript之execute_script()方法
1.浏览器滚动条的拖动,不能依靠WebDriver提供的API来实现,用于调整浏览器滚动条位置的JavaScript代码如下:
window.scrollTo(0,450);
window.scrollTo()方法用于设置浏览器窗口滚动条的水平位置和垂直位置,第一个参数表示水平左边距,第二个参数表示垂直上边距。相应的python代码如下:
from selenium import webdriver
from time import sleep
driver = webdriver.Firefox()
driver.set_window_size(800, 600)
driver.get("http://baidu.com")
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
sleep(2)
# 通过JavaScript设置浏览器窗口的滚动条位置
js = "window.scrollTo(100,450);"
driver.execute_script(js)
sleep(5)
driver.quit()
运行之后的结果展示:

当然,JavaScript的作用不仅仅体现在浏览器滚动条的操作上,还可以在页面中的textarea文本框中输入内容。文本框的HTML代码:
<textarea id="id" style="width: 98%" cols="50" rows="5" class="textarea"></textarea>
相应的python代码:
text = "input text"
js = "document.getElementById('id').value='" + text + "';"
driver.execute_script(js)
首先定义输入的内容text,然后将text与JavaScript代码通过“+”进行拼接,这样做的目的是为了方便自定义输入内容。
2.处理HTML5视频播放
IE9+、Firefox、Opera、Chrome都支持HTML5定义的<video>新元素,下面例子简单自动播放了一段<video>视频:
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.set_window_size(800, 600) driver.get("http://videojs.com")
sleep(5)
video = driver.find_element_by_id("preview-player_html5_api") # 返回播放文件地址
url = driver.execute_script("return arguments[0].currentSrc;", video)
print(url) # 播放视频
print("start")
driver.execute_script("arguments[0].play", video) # 播放15s
sleep(15) # 暂停视频
print("stop")
driver.execute_script("arguments[0].pause()", video)
sleep(5)
driver.quit()


JavaScript有个内置对象——arguments,包含了函数调用的参数数组,[0]表示取对象的第一个值,currentSrc方法返回当前音视频的URL,若未设置,则返回空字符串。load()、play()、pause()控制视频的加载、播放和暂停。
Selenium实战(二)——调用JavaScript之execute_script()方法的更多相关文章
- 3种创建、调用JavaScript对象的方法
hey you guys,两个月没有写技术博客了.作为一名有理想.有抱负的程序员,两个月不写技术博客,真该打.业精于勤,荒于嬉.行成于思,毁于随.勤奋是必不可少的,今后养成一周至少一篇博客的习惯.好了 ...
- Selenium定位二 --多个元素定位方法 和层级定位方法
定位多个元素: findElements()方法可以返回一个符合条件的元素List 组 如: public void hitUpdatePersonnel(WebDriver driver, int ...
- asp.net中调用javascript自定义函数的方法(包括引入JavaScript文件)总结
通常javascript代码可以与HTML标签一起直接放在前 端页面中,但如果JS代码多的话一方面不利于维护,另一方面也对搜索引擎不友好,因为页面因此而变得臃肿:所以一般有良好开发习惯的程序员都会把 ...
- javascript创建对象的方法--组合模式
javascript创建对象的方法--组合模式 一.总结 0.作用:解决原型模式对象独有属性创建麻烦的问题 1.组合模式使用普遍:jquery就是用的组合模式,组合模式使用非常普遍 2.组合模式优点: ...
- javascript创建对象的方法--构造函数模式
javascript创建对象的方法--构造函数模式 一.总结 构造函数模式作用和不足 1.作用:解决工厂模式不是用new关键字来创建对象的弊端 2.作用:解决工厂模式创建的实例和模型没有内在联系的问题 ...
- javascript创建对象的方法--动态原型模式
javascript创建对象的方法--动态原型模式 一.总结 1.作用:解决组合模式的属性和函数分离问题 2.思路:基本思路和组合模式相同:共用的函数和属性用原型方式,非共用的的函数和属性用构造函数 ...
- Selenium(十二):操作Cookie、调用JavaScript、HTML5的视频播放
1. 操作Cookie 有时候我们想要验证浏览器中cookie是否正确,因为基于真实cookie的测试是无法通过白盒和集成测试的.WebDriver提供了操作Cookie的相关方法,可以读取.添加和删 ...
- Selenium 2自动化测试实战21【调用JavaScript(控制浏览器的滚动条)】
一.调用JavaScript(控制浏览器的滚动条) WebDriver提供了execute_script()方法来执行JavaScript代码.用于调整浏览器滚动条位置的JavaScript代码如下 ...
- selenium+python自动化101-使用execute_script() 方法获取 JavaScript 返回值
前言 之前经常使用 execute_script() 方法执行 JavaScript 的来解决页面上一些 selenium 无法操作的元素,但是一直无法获取执行的返回值. 最近翻文档,发现 execu ...
随机推荐
- Net Core 中WebAPI有关 Session的设置,及获取
步骤一: 在Startup 文件中做相应的设置 ConfigureServices方法里添加 //ConfigureServices添加: services.AddSession(options =& ...
- [MP3]MP3固件持续分享(2019.1.25)
转载自我的博客:https://blog.ljyngup.com/archives/179.html/ 所有的固件到我的博客就可以下载哦 最后更新于2019.2.1 前言 这篇文章会持续更新不同型号的 ...
- Android 7.0新特性“Nougat”(牛轧糖)。
1.Unicode 9支持和全新的emoji表情符号 Android Nougat将会支持Unicode 9,并且会新增大约70种emoji表情符号.这些表情符号大多数都是人形的,并且提供不同的肤色, ...
- 浅谈单利模式及其应用场景(Python)
python 中的单利模式 使用场景: + Python的logger就是一个单例模式,用以日志记录 + Windows的资源管理器是一个单例模式 + 线程池,数据库连接池等资源池一般也用单例模式 + ...
- hexo--定制开发
新建页面 hexo new page "新建博文章的名称" 这时会在工程的source目录下新建about目录,里面新建index.md 在主题的_configy.yml中配置新页 ...
- while 循环 实例
/*int i=0; while(i<100){// 循环条件 while先执行后循环 printf("while第%d遍循环体\n",i);//循环体 i++; } */ ...
- 复制表结构创建分表 再设置自增ID
CREATE TABLE table_name1 LIKE table_name ALTER TABLE test AUTO_INCREMENT=x
- Mac-MacOS降级(Mac系统降级,系统回退)
前言 最近把macOS更新到了 macOS Catalina,使用了一段时间后,结合自己的使用环境和体验,感觉 Catalina 不太好用,就想把系统回退到 macOS Mojave,但是平时几乎不用 ...
- Linux学习Day2:安装RedHat Linux和新手必须掌握的命令
今天是Linux线上培训的第二天,主要是Linux环境的安装和几个常见命令的学习,具体如下: 一.RHEL7系统的安装 首先是VMware WorkStation 12.0软件的安装,然后是RHEL7 ...
- M5310-A 版本
模块外表 型号 BAND M5310-A MBRH0S04 +NB ...