Python Selenium 结合 Java Script 鼠标,键盘控制滚动条的多种方法

  在浏览网页时,通过鼠标滚动纵向滚动条,是常用的。在 Selenium 自动化测试框架里,可以通过和 JS ( Java Script ), ActionChains 结合实现。下面将列举4种的方法, 以新浪为例。

以下相关的方法测试视频 请看 https://weibo.com/2203755810


1. JS的 scrollTo() 和 scrollBy() 方法


#1

直接移动到指定坐标的绝对位置。


#2

直接移动到相对指定的坐标位置,这个坐标是相对于(0,1000)这个绝对位置再向下移动300像素。


#3

再向下移动300像素,也就是相对于(0,1000)这个绝对坐标位置,移动600像素。

也通过 while 或者 for 循环去实现向下滚动的次数,可以减少重复代码量。

注:视频中以移动5次为例。


#4

滚动条拖动到最下方


#5

滚动条拖动到浏览器的最上方


from selenium import webdriver
import time

browser = webdriver.Chrome()
browser.get(‘http://www.sina.com.cn’)
browser.maximize_window()

time.sleep(3)

#1

js = ‘window.scrollTo(0,1000)’
browser.execute_script(js)
time.sleep(5)


#2

js = ‘window.scrollBy(0,300)’
browser.execute_script(js)
time.sleep(5)


#3

js = ‘window.scrollBy(0,300)’
browser.execute_script(js)
time.sleep(5)


#4

js = ‘window.scrollTo(0, document.body.scrollHeight)’
browser.execute_script(js)
time.sleep(5)


#5

js = ‘window.scrollTo(0,0)’
browser.execute_script(js)


2. scrollIntoView() 和 scrollIntoView(false) 方法



#1

定位 “游戏”,如下图1


#2

用 scrollIntoView()方法,鼠标滚动动到"游戏" 顶端 与当前窗口的顶部对齐, 如下图2


#3

用 scrollIntoView(false)方法鼠标滚动动到"游戏" 底端 与当前窗口的底部对齐 如下图3



import time
from selenium import webdriver

browser = webdriver.Chrome()

browser.maximize_window()

browser.get(‘https://www.sina.com.cn’)

time.sleep(3)


#1

element = browser.find_element_by_xpath(’//*[@id=“SI_Order_L”]/div/div[1]/div/span[1]/a’)


#2

browser.execute_script(‘arguments[0].scrollIntoView()’, element)
time.sleep(3)


#3

browser.execute_script(‘arguments[0].scrollIntoView(false)’, element)


图1

Python Selenium 结合 Java Script 鼠标,键盘控制滚动条的多种方法_第1张图片


图2

Python Selenium 结合 Java Script 鼠标,键盘控制滚动条的多种方法_第2张图片

图3

Python Selenium 结合 Java Script 鼠标,键盘控制滚动条的多种方法_第3张图片

3. key_down() 和 key_up() 方法 结合循环方法


#1

按5次 Page_Down 键


#2

按5次 Page_Up 键


#3

按 End 键返回最底


#4

按 Home 键返回最顶



from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys

import time

browser = webdriver.Chrome()

browser.maximize_window()

browser.get(‘http://www.sina.com.cn’)

time.sleep(2)


#1

for i in range(5):
ActionChains(browser).key_down(Keys.PAGE_DOWN).key_up(Keys.PAGE_DOWN).perform()
time.sleep(2)


#2

for i in range(5):
ActionChains(browser).key_down(Keys.PAGE_UP).key_up(Keys.PAGE_UP).perform()
time.sleep(1)


#3

ActionChains(browser).key_down(Keys.END).key_up(Keys.END).perform()
time.sleep(2)

#4

ActionChains(browser).key_down(Keys.HOME).key_up(Keys.HOME).perform()


4. JS 的 scrollTop()方法

#1

变量值为1000,表示滚动到底部。


#2

变量值为0, 表示滚动到顶部



from selenium import webdriver
import time

browser = webdriver.Chrome()

browser.maximize_window()

browser.get(‘http://www.sina.com.cn’)

time.sleep(2)


#1

js=“var q=document.documentElement.scrollTop=10000”
browser.execute_script(js)
time.sleep(2)


#2

js=“var q=document.documentElement.scrollTop=0”
browser.execute_script(js)

你可能感兴趣的:(selenium)