一、滚动条
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')