Selenium3自动化测试【35】执行JS脚本(2)
1.引言
当单击某链接时,单击的链接有时不是在原标签页上实现跳转,而是新打开一个标签页。如何实现在多个窗口间进行切换呢?
现在很多网站开发都在使用HTML5,如何利用Selenium处理常用的HTML5元素。分别是canvas(画布),video (视频),audio (音频)就是HTML5中常见的3个对象。本节一起来看看video(视频)。
【2021】UI自动化测试:Selenium3自动化测试
(https://edu.csdn.net/course/detail/29953)
【测试全栈列视频课程】请点击我哦…
(https://edu.csdn.net/agency/59)
2.JS处理多窗口
当单击某链接时,单击的链接有时不是在原标签页上实现跳转,而是新打开一个标签页。如何实现在多个窗口间进行切换呢?
要解决该问题,可以通过修改html中元素的属性来解决。前面的小节了解到,JS可以修改元素的readonly属性,因此通过JS修改元素属性,以实现多窗口的切换。
单击Bing首页底部的【帮助】,会打开【举报问题】的一个新窗口,如图所示。
::: hljs-center
多窗口
:::
多窗口的处理,只需要修改target属性即可。查看【帮助】链接,会发现其target=“_blank”。因为target的属性为"_blank",所以打开链接的时候会重新打开一个新的标签页,如图所示。
::: hljs-center
元素的target属性
:::
只要去掉target="_blank"该属性即可实现在原标签页,打开链接,代码如下:
from selenium import webdriver
from time import sleepdriver = webdriver.Firefox()
driver.get("https://cn.bing.com/")sleep(2)
JS = 'document.getElementById("sb_help").target=""'
driver.execute_script(JS)
driver.find_element_by_xpath('//*[@id="sb_help"]').click()
3.JS处理video
现在很多网站开发都在使用HTML5,如何利用Selenium处理常用的HTML5元素。分别是canvas(画布),video (视频),audio (音频)就是HTML5中常见的3个对象。本节一起来看看video(视频)。
大多数浏览器使用控件(如Flash)来播放视频,但是不同的浏览器需要使用不同的插件。HTML5定义了一个新的元素,指定了一个标准的方式来嵌入电影片段,大部分浏览器都支持该元素。
3.1. Videojs网站案例
以videojs.com为例,访问该网站速度会慢些,代码如下:
from selenium import webdriver
from time import sleep
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import Bydriver = webdriver.Firefox()
driver.get("https://videojs.com")
# sleep(10)
#通过播放器的位置
video = WebDriverWait(driver, 30, 0.5).until(EC.presence_of_element_located((By.XPATH, '/html/body/div/div/main/div[1]/div/div/div[1]/div/video')))
#返回播放文件地址
url1=driver.execute_script("return arguments[0].currentSrc;",video)
print(url1)#播放视频
print("=====播放视频10秒=====")
driver.execute_script("return arguments[0].play()",video)
#播放10s
sleep(10)#暂停视频
print("=====暂停视频15秒=====")
driver.execute_script("arguments[0].pause()",video)
sleep(10)#播放视频
print("=====播放视频20秒=====")
driver.execute_script("return arguments[0].play()",video)
sleep(20)driver.quit()
3.2.斗鱼网站案例
以打开斗鱼直播首页为例,先定位到播放器的id,然后通过js来控制播放或暂停。
from selenium import webdriver
from time import sleep
profile = webdriver.ChromeOptions()
profile.add_argument(r"user-data-dir=C:\Users\Fourme\AppData\Local\Google\Chrome\User Data")
driver=webdriver.Chrome("chromedriver",0,profile)
driver.get("https://www.douyu.com/")# 定位播放的位置
video = driver.find_element_by_xpath("//video[@id='__video']")#返回文件
url= driver.execute_script("return arguments[0].currentSrc;",video)
#播放视频
driver.execute_script("return arguments[0].play()",video)
#播放30秒钟
sleep(30) #运行脚本时,等待时间需根据实际情况修订,有可能造成代码不能成功运行
#播放视频#暂停视频
driver.execute_script("return arguments[0].pause()",video)
#暂停15秒钟
sleep(15) #运行脚本时,等待时间需根据实际情况修订,有可能造成代码不能成功运行
#播放视频
driver.execute_script("return arguments[0].play()",video)
#播放15秒钟
sleep(15) #运行脚本时,等待时间需根据实际情况修订,有可能造成代码不能成功运行
#播放视频driver.quit()
如果你觉的文章读的不过瘾,可以查看详细的视频教程。
【2021】UI自动化测试:Selenium3自动化测试
(https://edu.csdn.net/course/detail/29953)
【测试全系列视频课程】请点击我哦…
(https://edu.csdn.net/agency/59)
学习路线如下
图书京东、当当有售
京东: https://item.jd.com/12784287.html
当当: http://product.dangdang.com/29177828.html
Selenium3自动化测试【35】执行JS脚本(2)相关推荐
- mongo shell连接到mongoDB及shell提示符下执行js脚本
同mysql数据库类似,mongoDB也可通过mongo客户端连接到mongod服务器来进行绝大多数日常管理.这个命令行工具就是mongo,在mysql中则是mysql.通过mongo命令可以连接到本 ...
- mongodb java 执行js脚本_MongoDB编写并执行js脚本
使用mongodb项目时经常需要在数据库中插入假数据,如果每次都手动插入就会很麻烦,所以我们可以选择编写脚本来执行.mongodb是可以直接执行js脚本的,使用方法也比较简单. 编写脚本 以插入数据为 ...
- AngularJs中,如何在render完成之后,执行Js脚本
AngularJs是Google开源的前端JS框架.使用AngularJs, 我们能够容易地.健壮的开发出类似于Gmail一样的单页Web应用.AngularJs这个新兴的MVC前端框架,具有以下特点 ...
- linux定时任务打印日志,Centos7(linux)使用crond服务定时执行js脚本并将脚本的输出内容记录日志文件的简单应用...
- ## 在Centos7.8上使用crond服务定时执行js脚本并将脚本执行的输出记录日志 1. 安装wget 2. wget https://npm.taobao.org/mirrors/node ...
- 服务器定时执行js脚本
前段时间买了一个腾讯云的linux(centos)服务器,打算在服务器上放一个js脚本,每天定时执行一次. 之前想过要写一个html,把js的脚本直接写进去,但是发现linux服务器并不能以打开网页的 ...
- Java 执行 JS 脚本工具
Java 执行 JS 脚本工具 用途:为了便于系统扩展,提供了 JS 脚本的功能,可以通过在系统中执行脚本来获得更复杂的功能. 例如:系统提供了一个接口,这个接口不必非的有实现类,而是可以通过JS来实 ...
- chrome谷歌浏览器执行js脚本步骤
描述:chrome谷歌浏览器执行js脚本步骤 步骤: F12-顶部Sources-左侧栏箭头Snippets-添加脚本New snippet-RUN
- Selenium——python中执行js脚本
import selenium from selenium import webdriver from selenium.webdriver.common.by import By from time ...
- ScriptEngine--Java动态执行JS脚本
ScriptEngine--Java动态执行JS脚本 简介 Eval(String script) 描述 实例代码 Put() and Get() 描述 实例代码 CompiledScript 描述 ...
最新文章
- 自律到极致-人生才精致:第2期
- C# 函数参数object sender, EventArgs e
- 浏览器扩展系列————透明浏览器窗口的实现
- idea中查看类中所有方法列表(Alt+7)(亲测)
- Google App Engine:在您自己的域中托管应用程序
- JavaScript数组对象简介及其常用方法介绍
- iPhone 5今日大限已至!不升级全部变砖
- Spring Aop 源码笔记和源码阅读个人技巧分享
- Unity官方中文网站
- 【流量池】裂变营销:10种人脉裂变技能,6个裂变核心,8个吸粉人性本能怎样玩粉丝裂变?
- dnf剑魂buff等级上限_DNF:剑魂最强武器,比星之海伤害更高,无神话红10都能8000亿...
- 墨魂服务器维修,墨魂琅轩路线怎么选最新游戏攻略
- JAVA垃圾收集器之Parallel Scavenge收集器
- ChatGPT中文使用手册
- UVa10158 War(并查集)
- iOS12.3正式版不能更新是怎么回事(解决办法)
- 艾玛·沃特森私密照惊现论坛 又是黑客惹的祸
- Java实现调用百度AI开放云平台(人脸识别API)
- 微信自定义分享ios无效
- SaaS、PaaS、IaaS的区别
热门文章
- 深度 linux固态硬盘速度,ubuntu linux deepin ssd优化
- 不用PS,如何给多图片批量加文字水印?
- php 页面图片无缝滚动,js实现图片无缝滚动
- 游戏开发小结——在unity3d中开发类塞尔达游戏的反冲效果
- K2 BPM_当K2遇上医药,用流程打通企业的任督二脉_业务流程管理系统
- BSD常用小技巧[转]
- 鸿蒙方将腐皮雀跃而有,古人有一万种方法表达心情,而你只会卧槽
- hive自定义函数UDF的使用方法
- win10开机内存占用就达到50%
- oracle创建视图字段,oracle cast--创建视图指定字段类型