JS调用
有些页面操作不能依靠WebDriver 提供的API 来实现,如浏览器滚动条的拖动。这时就需要借助JavaScript 脚本。WebDriver 提供了execute_script()方法来执行JavaScript 代码。
下面演示一个用js调整浏览器滚动条位置的例子
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.set_window_size(800,600)
driver.find_element(By.ID,'kw').send_keys("selenium")
driver.find_element(By.ID,'su').click()
js = "window.scrollTo(100,450);"
driver.execute_script(js)
sleep(2)
driver.quit()
window.scrollTo()
方法用于设置浏览器窗口滚动条的水平位置和垂直位置。第一个参数
表示水平的左边距,第二个参数表示垂直的上边距。
打开百度首页,然后调整窗口大小,使得滚动条可以显示出来,然后通过execute_script()
方法执行JS代码来控制浏览器滚动条的位置。
除此之外,还可利用JS对特殊的标签文本框中输入内容,例如<textarea>
文本框的 HTML 代码:
<textarea id="id-p" style="width: 98%" cols="50" rows="5" class="textarea">
</textarea>
此类标签虽然可以被定位到,但不能通过send_keys()
在文本框中输入文本信息,所以这种情况下,就需要借助JavaScript代码输入文本信息。
from selenium import webdriver
import os
from time import sleep
driver = webdriver.Chrome()
filepath = os.path.abspath('./')
jsdemo = 'file:///' + filepath + '\jsdemo.html'
print(jsdemo)
driver.get(jsdemo)
sleep(2)
text = "input textjs"
js = "document.getElementById('id-p').value='" + text + "';"
driver.execute_script(js)
sleep(2)
driver.quit()
首先,定义要输入的内容 text。然后,将text 与JavaScript 代码通过“+”进行拼接,这样做的目的是为了方便自定义输入内容。最后,通过execute_script()执行JavaScript 代码。
HTML5视频播放处理
WebDriver 支持在指定的浏览器上测试HTML5,另外,还可以使用JavaScript 测试这些功能,这样就可以在任意浏览器上测试HTML5 了。
大多数浏览器使用插件(如Flash)播放视频,但是,不同的浏览器需要使用不同的插件。HTML5 定义了一个新的元素,指定了一个标准的方式嵌入电影片段
下面演示一个自动化测试<video>
的例子:
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("http://videojs.com/")
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
print("播放15s")
sleep(15)
# 暂停视频
print("stop")
driver.execute_script("arguments[0].pause()",video)
driver.quit()
JavaScript 有个内置的对象叫作arguments
。arguments
包含了函数调用的参数数组,[0]
表示取对象的第1 个值。currentSrc
返回当前音频/视频的URL。如果未设置音频/视频,则返回空字符串。load()
、play()
和pause()
控制视频的加载、播放和暂停。
以上就是本期文章的所有内容,感谢观看,如果对您有帮助请点赞关注+收藏,一键三连,多谢支持!