selenium自动化滚动条操作及键盘操作

一、滚动条

1、首先找到元素,找元素就不写了,通过定位方式找就好了

2、js自动滚动

  先滚动到可视区域后
  参数一、 javacript 脚本, 参数二、传给 js 脚本的参数
  arguments 是列表, 只传递了一个值【0】
  js 脚本用 arguments 接受外部的参数
  js 脚本中用 scrollIntoView() 自动滚动到可视区域
  driver.execute_script("arguments[0].scrollIntoView()", ele)
  scrollIntoView() 默认与页面顶部对齐
  scrollIntoView(false) 页面底部对齐

1、直接滚动到页面底部
  driver.execute_script("window.scrollTO(0, document.body.scrollHeight)")
2、直接滚动到页面顶部
  driver.execute_script("window.scrollTo(document.body.scrollHeight, 0)")
3、移动到元素element对象的“底端”与当前窗口的“底部”对齐
  driver.execute_script("arguments[0].scrolllntoView(false);", element)
4、移动到元素element对象的“顶端”与当前窗口的“顶部”对齐
  driver.execute_script("arguments[0].scrolllntoView();", element)

这个是找百度客服电话,不适合电商之类的,

from selenium import webdriver
import time
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
"""
滚动的目的:将你要操作的元素,滚动到可视区域后,再操作
由js实现,
"""
# 键盘操作
from selenium.webdriver.common.keys import Keys
option = webdriver.ChromeOptions()
option.add_argument('disable-infobars')

driver = webdriver.Chrome(chrome_options=option)
driver.get("https://www.baidu.com/")
driver.maximize_window()  # 最大化浏览器
# Keys.ENTER 模拟回车
driver.find_element_by_id('kw').send_keys("百度", Keys.ENTER)
# 等待搜索结果出现
loc = (By.XPATH, '//a[text()="客服电话"]')
WebDriverWait(driver, 20).until(EC.visibility_of_element_located(loc))
# 找到要滚动的元素
ele = driver.find_element(*loc)

# 先滚动到可是区域后,
# 参数1、JavaScript脚本 参数2、传给JS脚本
# JS脚本中,用 arguments 来接收外部的参数
# js脚本中,用 scrollIntoView() 自动滚动到可视区域
# arguments 是列表,外部传递的列表, 只传递了一个值【0】
driver.execute_script('arguments[0].scrollIntoView();', ele)
# scrollIntoView() 默认与页面顶部对齐
# scrollIntoView(false) 页面底部对齐

# 再去点击
time.sleep(2)
driver.find_element(*loc).click()

"""
直接滚动到页面底部
driver.execute_script("window.scrollTO(0, document.body.scrollHeight)")
直接滚动到页面顶部
driver.execute_script("window.scrollTo(document.body.scrollHeight, 0)")
"""
driver.quit()

二、键盘操作

导入键盘操作库:Keya ,里面有各种键盘的操作,可以看一下它的源码

from selenium import webdriver
import time# 键盘操作
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.maximize_window()  # 最大化浏览器
# Keys.ENTER 模拟回车
driver.find_element_by_id('kw').send_keys("百度", Keys.ENTER)
# Keys.CONTROL, 'c'  模拟 Ctrl+c 操作
driver.find_element_by_id('kw').send_keys(Keys.CONTROL, 'c')

猜你喜欢

转载自www.cnblogs.com/yongzhuang/p/12512923.html