web自动化——Selenium 之执行js代码

一、javascipt

selenium执行js的方法,这里我们使用execute_script

调用:

  • 不传参:driver.execute_script("js语句")
driver.execute_script("window.scrollTo(0,0)")
  • 传参:driver.execute_script("js语句",参数)
login_ele=driver.find_element(By.XPATH,'//button[@class="el-button el-button--primary el-button--medium"]')
driver.execute_script('arguments[0].click();',login_ele)
  • 传多个参数:driver.execute_script("js语句1","js语句2",参数1,参数2)
login_ele=driver.find_element(By.XPATH,'//button[@class="el-button el-button--primary el-button--medium"]')
driver.execute_script('arguments[0].click();','arguments[1]',login_ele,True)

二、点击

  • 在JavaScript中有提供通过Id,classname等方式找元素,所以在定位元素时可直接用JavaScript语句找元素
driver.execute_script('document.getElementById("kw").click()')
  • 对于Xpath这种定位元素方式时,可以通过Javascript传参处理。

    1)先通过selenium定位找出元素

login_ele=driver.find_element(By.XPATH,'//button[@class="el-button el-button--primary el-button--medium"]')

     2)然后把找到的元素传给Javascript参数arguments。argument[0]表示传进来的第一个参数

driver.execute_script('arguments[0].click()',login_ele)

三、滚动

  方式一:window.scrollTo()

    window.scrollTo(0,0)    #滚动到最顶端

    window.scrollTo(0,100)    #滚动到100

    window.scrollTo(0,document.body.scrollHeight)    #从最顶滚动到最低端

 

    window.scrollTo(document.body.scrollHeight,0)    #从最低端滚动到最顶

    document.body.scrollWidth    #获取当前窗口的宽度

    document.body.scrollHeight    #获取当前窗口的高度

driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")
driver.execute_script("window.scrollTo(0,0)")

  方式二:通过weblement对象的方法location_once_scrolled_into_view将元素滚动到可见区域

# 找到页面元素
page_two_ele = driver.find_element_by_xpath('//div[@id="page"]//span[text()="2"]')
# 滚动到可见区载
page_two_ele.location_once_scrolled_into_view

  方式三:通过JS代码将元素滚动到可见区域

     移动到元素的底端与当前窗口的底部对齐:arguments[0].scrollIntoView(false)

     移动到元素的顶端与当前窗口的顶端对齐:arguments[0].scrollIntoView(true)

driver.execute_script('arguments[0].scrollIntoView(false);',page_two_ele)

四、修改元素

  •   设置元素属性

document.getElementByXX('XX').setAttribute('XX','XX')

  •   移除元素属性

document.getElementByXX('XX').removeAttribute('XX')

  •   获取元素属性的值

return document.getElementByXX('XX').属性

val=driver.execute_script("return arguments[0].style;",login_button_ele)
  •   修改元素值

document.getElementByXX('XX').value('XX')

#写法一
login_ele=driver.find_element(By.ID,'kw')
driver.execute_script("arguments[0].value=arguments[1]",login_ele,'ningm')
#写法二
driver.execute_script('document.getElementById("kw").value="ningm"')
posted @ 2024-03-02 20:23  芒果93  阅读(294)  评论(0编辑  收藏  举报