问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Selenium之execute_script()方法执行js脚本

创作时间:
作者:
@小白创作中心

Selenium之execute_script()方法执行js脚本

引用
CSDN
1.
https://m.blog.csdn.net/weixin_47257473/article/details/140560131

Selenium 是一个强大的 Web 自动化测试工具,但有时会遇到一些 Selenium 原生方法无法直接实现的功能。这时,我们可以使用 execute_script() 方法来执行 JavaScript 脚本,以实现更灵活的 Web 自动化测试或数据抓取任务。

核心应用场景

execute_script() 方法主要有以下应用场景:

  1. 页面滚动:滚动到指定位置或页面底部
  2. 获取返回值:从页面元素中获取特定信息
  3. 返回 JavaScript 定位的元素对象:获取元素对象并操作其属性或方法
  4. 修改元素属性:修改元素的属性值
  5. 弹出提示框:显示提示信息

代码示例

页面滚动

滚动到指定位置:

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

class casetest(object):
    def __init__(self):
        self.driver = webdriver.Edge()
        self.driver.get('http://www.baidu.com')
    def test_execute(self):
        self.driver.find_element(By.ID,('kw')).send_keys('selenium')
        self.driver.find_element(By.ID,('su')).click()
        sleep(2)
        js = 'window.scrollTo(0,1000)'
        self.driver.execute_script(js)
        sleep(2)

if __name__ == '__main__':
    case = casetest()
    case.test_execute()
    case.driver.quit()  

滚动到页面底部:

js = 'window.scrollTo(0,document.body.scrollHeight)'
self.driver.execute_script(js)

获取返回值

以博客园某作者为例,获取“博客园”这个文本:

js = ('return document.getElementById("blog_nav_sitehome").innerText')
res = self.driver.execute_script(js)
print(res)

返回 JavaScript 定位的元素对象

获取元素的所有属性:

js = ('return document.getElementById("blog_nav_sitehome")')
res = self.driver.execute_script(js)
print(res.text)
link = res.get_attribute("href")
print(link)
res.click()

修改元素属性

修改日期控件的值:

self.driver.execute_script("dat=document.getElementById('train_date'); dat.removeAttribute('readonly')")
self.driver.execute_script("document.getElementById('train_date').value='2023-10-01'")
now_time = self.driver.execute_script("return document.getElementById('train_date').value")
assert '2023-10-01' == now_time

弹出提示框

显示提示信息:

js = "alert('This is a Test!')"
self.driver.execute_script(js)

通过 execute_script() 方法,我们可以利用 JavaScript 的强大功能与页面进行更深入的交互,完成一些 Selenium 本身无法直接实现的功能。


© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号