python+Selenium——web自动化(浏览器窗口操作、鼠标键盘事件、滚动条)
目录窗口操作鼠标事件键盘事件滚动条窗口操作from selenium import webdriverimport timedr = webdriver.Chrome()wd = dr.get('http://baidu.com/')# 设置窗口设置dr.set_window_position(30,50)# 设置窗口所在屏幕上的位置time.sleep(1)dr.set_window_posit
目录
窗口操作
from selenium import webdriver
import time
dr = webdriver.Chrome()
wd = dr.get('http://baidu.com/')
# 设置窗口设置
dr.set_window_position(30,50) # 设置窗口所在屏幕上的位置
time.sleep(1)
dr.set_window_position(80,100) # 修改窗口所在屏幕上的位置
print(dr.get_window_position()) # 获取窗口在屏幕上的位置坐标
time.sleep(1)
dr.set_window_size(800,300) # 设置窗口指定大小
print(dr.get_window_size()) # 获取浏览器窗口大小
time.sleep(1)
dr.minimize_window() # 设置窗口最小化
time.sleep(1)
dr.maximize_window() # 设置窗口最大化
# 浏览器的前进与后退及刷新
dr.find_element_by_css_selector('#form input#kw').send_keys('python')
dr.find_element_by_css_selector('input#su').click()
time.sleep(1)
dr.back() # 后退
time.sleep(1)
dr.forward() # 前进
time.sleep(1)
dr.refresh() # 刷新
time.sleep(1)
dr.quit()
鼠标事件
在selenium当中除了简单的点击动作外,还有一些稍微复杂的动作,就需要用到ActionChains(动作链)这个子模块来满足需求。 鼠标操作的方法封装在ActionChains类中,为了方便使用,首先需要导入这个类。所有的动作执行后都需要使用perform()方法提交才可以成功。
|
ActionChains提供的方法 |
作用 |
|
click(on_element=None) |
鼠标左键单击传入的元素 |
|
double_click(on_element=None) |
双击鼠标左键 |
|
context_click(on_element=None) |
点击鼠标右键 |
|
click_and_hold(on_element=None) |
点击鼠标左键,按住不放 |
|
release(on_element=None) |
在某个元素位置松开鼠标左键 |
|
drag_and_drop(source, target) |
拖拽到某个元素然后松开 |
|
drag_and_drop_by_offset(source, xoffset, yoffset) |
拖拽到某个坐标然后松开 |
|
move_to_element(to_element) |
鼠标移动到某个元素 |
|
move_by_offset(xoffset, yoffset) |
移动鼠标到指定的x,y位置 |
|
move_to_element_with_offset(to_element, xoffset, yoffset) |
将鼠标移动到距某个元素多少距离的位置 |
|
perform() |
执行链中的所有动作 |
from selenium import webdriver
from selenium.webdriver import ActionChains
# 鼠标事件(括号中参数为要执行的目标元素)
ActionChains.click() # 单击
ActionChains.perform() # 执行所有存储的行为,即对对应操作的提交
ActionChains.context_click() # 右击
ActionChains.double_click() # 双击
ActionChains.drag_and_drop(a,b) # 拖动,a为原元素,b为释放鼠标后的目标元素
ActionChains.move_to_element() # 鼠标悬停
键盘事件
键盘事件操作的方法存放在Keys()类中,需要先导入
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
# 键盘事件(鼠标执行事件都是通过send_keys()命令,括号中的参数指定对应的键盘操作),跟多操作查询官网
Keys.BACK_SPACE # 删除键(Backspace)
Keys.SPACE # 空格键
Keys.TAB # 制表符Tab
Keys.ESCAPE # 回退键Esc
Keys.ENTER # 回车
Keys.CONTROL,'a' # 全选
Keys.CONTROL,'c' # 复制
Keys.CONTROL,'x' # 剪切
Keys.CONTROL,'v' # 黏贴
Keys.F12 # F1——F12
滚动条
浏览器滚动条到最下方的代码(适合滚动加载使用),window.scrollTo() 参数,滚动条的横向距离和纵向距离
方法一:
每次滚动到最下方
# 定义一个初始值表示滚动条与顶部的距离
original_top = 0
while True:
# 循环下拉滚动条
self.wd.execute_script("window.scrollTo(0,document.body.scrollHeight)")
time.sleep(0.5)
# 获取当前滚动条距离顶部的距离
check_height = self.wd.execute_script(
"return document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;")
# 如果滚动条距离上面的距离不再改变,也就是滚动后的距离和之前距离顶部的位置没有改变,说明到达最下方,跳出循环
if check_height == original_top:
break
original_top = check_height
方法二:
每次滚动设定距离
# 定义一个初始值表示滚动条与顶部的距离
original_top = 0
while True:
# 循环下拉滚动条
self.wd.execute_script("window.scrollBy(0,500)")
time.sleep(0.5)
check_height = self.wd.execute_script(
"return document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;")
# 如果滚动条距离上面的距离不再改变,也就是滚动后的距离和之前距离顶部的位置没有改变,说明到达最下方,跳出循环
if check_height == original_top:
break
original_top = check_height
两段代码不同之处在于execute_script中的参数window.scrollTo,和 window.scrollBy ,window.scrollBy(在设置每次滚动设定距离时使用较好),在获取当前滚动条距离顶部的距离时,某些浏览器会有所不同。
其他方向的滚动
滚动到元素对象的“底端”与当前窗口的“底部”对齐 :execute_script("arguments[0].scrollIntoView(false);",element)
滚动到元素对象的“顶端”与当前窗口的“顶部”对齐:execute_script("arguments[0].scrollIntoView();",element)
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)