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()
控制视频的加载、播放和暂停。
以上就是本期文章的所有内容,感谢观看,如果对您有帮助请点赞关注+收藏,一键三连,多谢支持!