Selenium3自动化测试【35】执行JS脚本(2)

1.引言

当单击某链接时,单击的链接有时不是在原标签页上实现跳转,而是新打开一个标签页。如何实现在多个窗口间进行切换呢?

现在很多网站开发都在使用HTML5,如何利用Selenium处理常用的HTML5元素。分别是canvas(画布),video (视频),audio (音频)就是HTML5中常见的3个对象。本节一起来看看video(视频)。

《Python3+Selenium3自动化测试》精品视频课程
《全栈测试课程》精品系列课程


同步视频知识与系列知识内容,可关注:【公众号】:柒哥测试;【WX】:Lee-890;


2.JS处理多窗口

当单击某链接时,单击的链接有时不是在原标签页上实现跳转,而是新打开一个标签页。如何实现在多个窗口间进行切换呢?
要解决该问题,可以通过修改html中元素的属性来解决。前面的小节了解到,JS可以修改元素的readonly属性,因此通过JS修改元素属性,以实现多窗口的切换。
单击Bing首页底部的【帮助】,会打开【举报问题】的一个新窗口,如图所示。
1.jpg
::: hljs-center

多窗口

:::

多窗口的处理,只需要修改target属性即可。查看【帮助】链接,会发现其target="_blank"。因为target的属性为"_blank",所以打开链接的时候会重新打开一个新的标签页,如图所示。
2.png
::: hljs-center

元素的target属性

:::

只要去掉target="_blank"该属性即可实现在原标签页,打开链接,代码如下:

from selenium import webdriver
from time import sleep

driver = 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 By

driver = 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()

精讲视频

如果你觉的文章读的不过瘾,可以查看详细的视频教程。

测试学习路线如下

热销图书

图书京东、当当有售
京东图书地址
当当图书地址
0.9733767060093851.png

同步视频知识与系列知识内容,欢迎可关注:【公众号】:柒哥测试;或【WX】:Lee-890交流

posted @ 2022-05-20 10:16  BlaLeo  阅读(57)  评论(0编辑  收藏  举报