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

目录

场景应用和使用

页面滚动

获取返回值

返回JavaScript定位的元素对象

修改元素属性

弹出提示框


场景应用和使用

在自动化测试中,部分场景无法使用自动化Selenium原生方法来进行测试:

  •         滚动到某个元素(位置)
  •         修改时间控件(修改元素属性)
  •         其它场景

因此我们需要使用js脚本来执行,js脚本有两种执行场景:

  •         在页面上直接执行js
  •         定位到指定元素再执行js 

WebDriver有两个方法来执行JavaScript,分别是:

  1. execute_script(同步执行)
  2. execute_async_script(异步执行)

下面将介绍使用execute_script()方法执行js的实例

页面滚动

1.滚动页面操作

        页面滚动我们可以滚到到指定位置,也可以滚到到页面底部

页面滚动使用

window.scrollTo(x,y)

来进行滚动,其中x表示横向滚动的位置,y表示纵向滚动的位置

1.滚动到指定位置

假设我们想滚动到距离顶部1000的位置,我们可以设置x=0,y=1000,如下:

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://wwww.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)'
        #使用execute_script执行js脚本
        self.driver.execute_script(js)
        sleep(2)


if __name__ == '__main__':
    case = casetest()

    case.test_execute()

    case.driver.quit()

运行后,我们发现位置已经在距离顶部1000的位置了

或者我们可以使用Document来实现

js脚本如下:


                
Selenium的`execute_script()`方法是一个强大的功能,它允许你在浏览器环境中运行JavaScript代码。当你需要抓取滚动加载或者隐藏的元素时,可以利用这个方法来模拟用户交互并动态获取内容。这是因为`execute_script()`能直接操作DOM(Document Object Model),即使元素原本不可见或位于滚动区域。 以下是如何使用`execute_script()`方法来抓取scroller(滚动条)或hidden(隐藏)元素的步骤: 1. 首先,你需要编写一段JavaScript脚本,这通常涉及到使用`document.querySelector`或`document.getElementById`等方法,它们可以在JavaScript中选择隐式或显式滚动到的内容。例如,如果元素id为"hiddenElement",你可以这样做: ```javascript var element = document.querySelector('#hiddenElement'); ``` 2. 然后,在PythonSelenium代码中调用`execute_script`: ```python from selenium import webdriver # 初始化浏览器实例 driver = webdriver.Chrome() # 使用execute_script执行JavaScript element_text = driver.execute_script("return document.querySelector('#hiddenElement').innerHTML") # 获取到元素文本后,你可以进一步处理 print(element_text) ``` 3. 对于滚动加载的内容,你可以编写脚本让它滚动到底部,再查找元素。比如,如果你有一个滚动区域的ID,可以这样做: ```javascript window.scrollTo(0, document.body.scrollHeight); var loadedElement = document.querySelector('#scrollableArea > .hidden-element'); ``` 记得替换上述代码中的`#hiddenElement`、`#scrollableArea`或`.hidden-element`为你实际要抓取的元素的标识符。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

次元工程师!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值