selenium Webdriver自动化测试之执行JavaScript脚本
WebDriver提供了execute_script()方法来执行JavaScript代码
具体DOM操作使用方法见之前写的一篇博文:https://www.cnblogs.com/feng0815/p/8215768.html
关于Webdriver自动化测试之执行JavaScript脚本可直接参考下面代码
#!/usr/bin/python # -*- coding: UTF-8 -*- """ @author:chenshifeng @file:base.py @time:2020/10/17 """ import os from selenium import webdriver class Base: def setup_class(self): # option = webdriver.ChromeOptions() # option.add_experimental_option('w3c', False) # self.driver = webdriver.Chrome(options=option) browser = os.getenv('browser') if browser == 'firefox': self.driver = webdriver.Firefox() elif browser == 'headless': self.driver = webdriver.phantomjs() else: self.driver = webdriver.Chrome() self.driver.maximize_window() self.driver.implicitly_wait(5) def teardown_class(self): self.driver.quit()
上面代码为演示代码中from test_selenium.base import Base 导入的代码
#!/usr/bin/python # -*- coding: UTF-8 -*- """ @author:chenshifeng @file:test_js.py @time:2020/10/17 """ from time import sleep from test_selenium.base import Base class TestJS(Base): # 百度搜索演示 def test_js(self): self.driver.get('https://www.baidu.com') self.driver.find_element_by_id('kw').send_keys('selenium测试') element = self.driver.execute_script('return document.getElementById("su")') element.click() # 点击搜索 sleep(2) self.driver.execute_script('document.documentElement.scrollTop=10000') # 页面向下滑动10000个像素 sleep(2) self.driver.find_element_by_xpath('//*[@id="page"]/div/a[10]').click() # 点击下一页 sleep(2) self.driver.execute_script('document.documentElement.scrollTop=10000') # 页面向下滑动10000个像素 sleep(2) for code in [ 'return document.title', 'return JSON.stringify(performance.timing)' ]: print(self.driver.execute_script(code)) # print(self.driver.execute_script('return document.title;return JSON.stringify(performance.timing)')) # JSON.stringify() 方法用于将 JavaScript 值转换为 JSON 字符串。 # performance.timing 加载和使用当前页面期间发生的各种事件的性能计时信息。 def test_modify_traindate(self): # 12306时间选择框演示 self.driver.get('https://www.12306.cn/index/') sleep(2) # 通过js代码设置时间(需先去除readonly属性) self.driver.execute_script( 'a=document.getElementById("train_date");a.removeAttribute("readonly");a.value="2020-12-31"') sleep(2) print(self.driver.execute_script('return document.getElementById("train_date").value'))
常用JavaScript脚本
driver.execute_script("document.body.style.zoom='0.5'") #网页缩小 driver.execute_script("document.body.style.zoom='1.7'") #网页放大 driver.executeScript("window.scrollTo(window.pageXOffset,document.body.scrollHeight)"); #滑动到页面最底部 driver.executeScript("window.scrollTo(window.pageXOffset, 0)");#滑动到页面最顶部 driver.executeScript("arguments[0].scrollIntoView(false);", driver.findElement(by));#上下滑动使元素和窗口底部对齐 driver.executeScript("arguments[0].scrollIntoView(true);", driver.findElement(by)); #上下滑动使元素和窗口顶部对齐 driver.executeScript("window.scrollTo(document.body.scrollWidth, window.pageYOffset)") #水平滑动到页面最右边
如果您觉得本篇文章还不错,欢迎点赞,转发分享(转发请注明出处),感谢~~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】