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)相关推荐

  1. mongo shell连接到mongoDB及shell提示符下执行js脚本

    同mysql数据库类似,mongoDB也可通过mongo客户端连接到mongod服务器来进行绝大多数日常管理.这个命令行工具就是mongo,在mysql中则是mysql.通过mongo命令可以连接到本 ...

  2. mongodb java 执行js脚本_MongoDB编写并执行js脚本

    使用mongodb项目时经常需要在数据库中插入假数据,如果每次都手动插入就会很麻烦,所以我们可以选择编写脚本来执行.mongodb是可以直接执行js脚本的,使用方法也比较简单. 编写脚本 以插入数据为 ...

  3. AngularJs中,如何在render完成之后,执行Js脚本

    AngularJs是Google开源的前端JS框架.使用AngularJs, 我们能够容易地.健壮的开发出类似于Gmail一样的单页Web应用.AngularJs这个新兴的MVC前端框架,具有以下特点 ...

  4. linux定时任务打印日志,Centos7(linux)使用crond服务定时执行js脚本并将脚本的输出内容记录日志文件的简单应用...

    - ## 在Centos7.8上使用crond服务定时执行js脚本并将脚本执行的输出记录日志 1. 安装wget 2. wget https://npm.taobao.org/mirrors/node ...

  5. 服务器定时执行js脚本

    前段时间买了一个腾讯云的linux(centos)服务器,打算在服务器上放一个js脚本,每天定时执行一次. 之前想过要写一个html,把js的脚本直接写进去,但是发现linux服务器并不能以打开网页的 ...

  6. Java 执行 JS 脚本工具

    Java 执行 JS 脚本工具 用途:为了便于系统扩展,提供了 JS 脚本的功能,可以通过在系统中执行脚本来获得更复杂的功能. 例如:系统提供了一个接口,这个接口不必非的有实现类,而是可以通过JS来实 ...

  7. chrome谷歌浏览器执行js脚本步骤

    描述:chrome谷歌浏览器执行js脚本步骤 步骤: F12-顶部Sources-左侧栏箭头Snippets-添加脚本New snippet-RUN

  8. Selenium——python中执行js脚本

    import selenium from selenium import webdriver from selenium.webdriver.common.by import By from time ...

  9. ScriptEngine--Java动态执行JS脚本

    ScriptEngine--Java动态执行JS脚本 简介 Eval(String script) 描述 实例代码 Put() and Get() 描述 实例代码 CompiledScript 描述 ...

最新文章

  1. 自律到极致-人生才精致:第2期
  2. C# 函数参数object sender, EventArgs e
  3. 浏览器扩展系列————透明浏览器窗口的实现
  4. idea中查看类中所有方法列表(Alt+7)(亲测)
  5. Google App Engine:在您自己的域中托管应用程序
  6. JavaScript数组对象简介及其常用方法介绍
  7. iPhone 5今日大限已至!不升级全部变砖
  8. Spring Aop 源码笔记和源码阅读个人技巧分享
  9. Unity官方中文网站
  10. 【流量池】裂变营销:10种人脉裂变技能,6个裂变核心,8个吸粉人性本能怎样玩粉丝裂变?
  11. dnf剑魂buff等级上限_DNF:剑魂最强武器,比星之海伤害更高,无神话红10都能8000亿...
  12. 墨魂服务器维修,墨魂琅轩路线怎么选最新游戏攻略
  13. JAVA垃圾收集器之Parallel Scavenge收集器
  14. ChatGPT中文使用手册
  15. UVa10158 War(并查集)
  16. iOS12.3正式版不能更新是怎么回事(解决办法)
  17. 艾玛·沃特森私密照惊现论坛 又是黑客惹的祸
  18. Java实现调用百度AI开放云平台(人脸识别API)
  19. 微信自定义分享ios无效
  20. SaaS、PaaS、IaaS的区别

热门文章

  1. 深度 linux固态硬盘速度,ubuntu linux deepin ssd优化
  2. 不用PS,如何给多图片批量加文字水印?
  3. php 页面图片无缝滚动,js实现图片无缝滚动
  4. 游戏开发小结——在unity3d中开发类塞尔达游戏的反冲效果
  5. K2 BPM_当K2遇上医药,用流程打通企业的任督二脉_业务流程管理系统
  6. BSD常用小技巧[转]
  7. 鸿蒙方将腐皮雀跃而有,古人有一万种方法表达心情,而你只会卧槽
  8. hive自定义函数UDF的使用方法
  9. win10开机内存占用就达到50%
  10. oracle创建视图字段,oracle cast--创建视图指定字段类型