一、前言:
JS定义:
JS就是JavaScript;属于web的语言,它适用于PC、笔记本电脑、平板电脑和移动电话
JavaScript被设计为向HTML页面增加交互性
JS传送门:http://www.w3school.com.cn/b.asp
二、JS处理滚动条问题
1、滚动条回到顶部:
js="var q=document.getElementById('id').scrollTop=0"
driver.execute_script(js)
或者
js="var q=document.documentElement.scrollTop=0"
driver.execute_script(js)
2、滚动条拉到底部:
js="var q=document.getElementById('id').scrollTop=10000"
driver.execute_script(js)
或者
js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)
3、滚动条拉到指定位置(具体元素):
target = driver.find_element_by_id("id_keypair")
driver.execute_script("arguments[0].scrollIntoView();", target)
4、通过模拟键盘 DOWN(↓)来拖动:
driver.find_element_by_id("id").send_keys(Keys.DOWN)
5、scrollTo 函数用法
scrollHeight | 获取对象的滚动高度 |
scrollLeft | 设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离 |
scrollTop | 设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离 |
scrollWidth | 获取对象的滚动宽度 |
滚动到底部:
js = "window.scrollTo(0,document.body.scrollHeight)"
driver.execute_script(js)
滚动到顶部:
js = "window.scrollTo(0,0)"
driver.execute_script(js)
三、使用 JS 操作浏览器滚动条
(1)使用JS操作浏览器右侧竖向滚动条
例子1:
from selenium import webdriver
from time import sleep
driver = webdriver.Firefox()
driver.get("http://www.51zxw.net")
#0是顶部,10000是底部
js = "var action=document.documentElement.scrollTop=10000" #将滚动条拖到最底部
driver.execute_script(js)
sleep(3)
js = "var action=document.documentElement.scrollTop=0" #将滚动条拖到最顶部
driver.execute_script(js)
sleep(3)
driver.quit()
print("拖动成功")
例子2:
from selenium import webdriver
import time
driver=webdriver.Firefox()
driver.get("https://www.baidu.com")
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
time.sleep(5)
#将页面滚动条拖到最底端 var在json里面定义一个变量
js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)
time.sleep(5)
#将页面滚动条拖到最顶端
js="var q=document.documentElement.scrollTop=0"
driver.execute_script(js)
time.sleep(5)
#将页面滚动条移动到页面任意位置,改变等于号后的数值即可
js="var q=document.documentElement.scrollTop=50"
driver.execute_script(js)
driver.quit()
例子3:
'''
#右侧的滚动条上下拖动
from selenium import webdriver
import time
driver=webdriver.Firefox()
driver.get("https://www.baidu.com")
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
time.sleep(5)
#将页面滚动条拖到最底端 var在json里面定义一个变量
js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)
time.sleep(5)
#将页面滚动条拖到最顶端
js="var q=document.documentElement.scrollTop=0"
driver.execute_script(js)
time.sleep(5)
#将页面滚动条移动到页面任意位置,改变等于号后的数值即可
js="var q=document.documentElement.scrollTop=50"
driver.execute_script(js)
driver.quit()
'''
#浏览器底部的横向滚动条
from selenium import webdriver
import time
driver=webdriver.Firefox()
driver.get("https://www.baidu.com")
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
js1 = "window.scrollTo(0, document.body.scrollHeight)"#滑动滚动条到底部
js2 = "window.scrollTo(0,0)"#滑动到顶部
js3 = "window.scrollTo(0,200)"#向下移动200像素
js4 = "arguments[0].scrollIntoView();"#滑动滚动条到某个指定的元素
time.sleep(2) #等待页面加载完,注意观察滚动条目前处于最上方
driver.execute_script(js1) #执行js1,将滚动条滑到最下方
time.sleep(2) #加等待时间,看效果
driver.execute_script(js2) #执行js2,将滚动条滑到最上方
time.sleep(2) #加等待时间,看效果
driver.execute_script(js3) #执行js3,将滚动条向下滑到200像素
time.sleep(2) #加等待时间,看效果
driver.execute_script(js2) #执行js2,将滚动条滑到最上方
time.sleep(2)
ele = driver.find_element_by_id('con-ar') #定位一个元素driver.execute_script(js4,ele) #滑动到上面定位的元素的地方
time.sleep(2)
(2)使用JS操作浏览器底部横向滚动条
from selenium import webdriver
import time
driver=webdriver.Firefox()
driver.get("http://www.baidu.com")
time.sleep(2)
driver.find_element_by_id('kw').send_keys("selenium")
driver.find_element_by_id('su').click()
driver.set_window_size(500,500)
js1="window.scrollTo(document.body.scrollWidth,0)"
js2="window.scrollTo(0,0)"
js3="window.scrollTo(200,0)"
driver.execute_script(js1) #移动到最右边
time.sleep(2)
driver.execute_script(js2) #移动到最左边
time.sleep(2)
driver.execute_script(js3) #向右移动200像素
time.sleep(2)
===========================================================
下面没有深做研究
===========================================================
(3)滚动条拉到指定位置
若要对页面中的提示警告窗口中的滚动条进行操作,要先定位到该内嵌窗口,在进行滚动条操作 js="var q=document.getElementById('id').scrollTop=100000"
driver.execute_script(js)
time.sleep(3)
使用js脚本拖动到提定地方
target = driver.find_element_by_id("id_keypair") driver.execute_script("arguments[0].scrollIntoView();", target) #拖动到可见的元素去
(4)通过模拟键盘操作
用键盘右下角的UP,DOWN按键来处理页面滚动
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
#访问百度
driver=webdriver.Firefox()
driver.get("http://www.baidu.com")
#搜索
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
time.sleep(3)
#通过按向下键将页面滚动条拖到底部
driver.find_element_by_xpath("//*[@id='page']/a[10]").send_keys(Keys.DOWN)
print ('将滚动条拉到底端')
time.sleep(2)
driver.find_element_by_xpath("//*[@id='s_tab']/a[9]").send_keys(Keys.UP)
print ('将滚动条拉到上端')
time.sleep(2)
driver.quit()
根据页面显示进行变通,发送tab键
密码是输入框,正常手工操作时,可以通过tab键会切换到密码框中,所以根据此思路,在python中也可以发送tab键来切换,使元素显示
from selenium.webdriver.common.keys import Keys driver.find_element_by_id("id_login_method_0").send_keys(Keys.TAB)