1、打开浏览器
# 自动化初体验 打开Chrome浏览器,打开淘宝首页
from selenium import webdriver #安装浏览器驱动
url = 'https://www.taobao.com'
# 实例化webdriver, 将浏览器设定为Chrome
webdriver_path = r'D:\LenovoSoftstore\Install\Python\Python39\chromedriver.exe'
browser = webdriver.Chrome(executable_path=webdriver_path) # chromedriver.exe在python安装目录的话,不用加这个参数
browser.get(url) # 启动浏览器,打开淘宝首页
2、打开百度首页、定位输入框个按钮元素并输入内容、输入键盘按键以及点击按钮操作
# 打开百度搜索 python
# 导入webdriver类
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
# 定义url
url = 'https://www.baidu.com'
# 实例化webdriver
driver = webdriver.Chrome()
# 打开浏览器,打开url网页
driver.get(url)
# 在元素ID为kw,输入python
baidu_element_input = driver.find_element_by_id('kw')
baidu_element_input.send_keys('Python')
time.sleep(3)
# 删除kw元素中的内容
baidu_element_input.clear()
time.sleep(3)
# 输入其他内容
baidu_element_input.send_keys('filetype:pdf')
baidu_element_input.send_keys(Keys.SPACE)
baidu_element_input.send_keys('Python')
time.sleep(3)
# Ctrl+a 全选内容
baidu_element_input.send_keys(Keys.CONTROL, 'a')
time.sleep(3)
# Ctrl + x 剪切内容
baidu_element_input.send_keys(Keys.CONTROL, 'x')
time.sleep(3)
# Ctal + v 粘贴内容
baidu_element_input.send_keys(Keys.CONTROL, "v")
time.sleep(3)
# 通过回车键,代替单击操作
baidu_element_souSuo = driver.find_element_by_id('su')
baidu_element_souSuo.send_keys(Keys.ENTER)
# 通过元素ID定位元素,并点击
driver.find_element_by_id('su').click()
# 通过元素xpath定位元素,并点击
#driver.find_element_by_xpath('//*[@id="form"]/span[2]').click()
driver.find_element_by_xpath('//*[@id="form"]/span[2]').submit()
3、设置浏览器参数
# 设置浏览器参数
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
url = "https://movie.douban.com/"
# 实例化Option
chrome_options = Options()
# headless 不显示浏览器启动以及执行过程
# chrome_options.add_argument('--headless')
chrome_options.add_argument('lang=zh_cn.UTF-8')
UserAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ' \
'(KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'
chrome_options.add_argument('User-Agent=' + UserAgent)
# 启动流浪器 并设置参数
driver = webdriver.Chrome(options=chrome_options)
# 最大化窗口
driver.maximize_window()
# 最小化窗口
driver.minimize_window()
# 或者设置具体大小
# browser.set_window_size(width, height)
driver.maximize_window()
driver.get(url)
# 获取页面title和源码
print(driver.title)
print(driver.page_source[0:500])
4、使用JS打开新的页面、切换窗口
# 切换不同的网页窗口
from selenium import webdriver
import time
url_baidu = "https://www.baidu.com"
url_soGou = "https://www.sogou.com"
driver = webdriver.Chrome()
driver.get(url_baidu)
# 使用js启用新的窗口
js = 'window.open("https://www.sogou.com");'
driver.execute_script(js)
# 获取当前浏览器的窗口信息
current_window = driver.current_window_handle
# 获取浏览器的全部窗口信息
handles = driver.window_handles
# 设置延时
time.sleep(3)
# 切换窗口
driver.switch_to.window(handles[0])
time.sleep(3)
driver.switch_to.window(handles[1])
5、上传和下载文件
# 上传文件 下载文件
from selenium import webdriver
import time
url = "https://www.baidu.com"
driver = webdriver.Chrome()
driver.get(url)
element_photo = driver.find_element_by_xpath('//*[@id="form"]/span[1]/span[1]').click()
element_upFile = driver.find_element_by_xpath('//*[@id="form"]/div/div[2]/div[2]/input').\
send_keys(r"C:\Users\15703\Documents\斗罗大陆壁纸.jpg")
# 下载文件
# 设置下载路径
option = webdriver.ChromeOptions()
prefs = {'download.default_directory': 'D:\\'}
option.add_experimental_option('prefs', prefs)
driver_2 = webdriver.Chrome()
driver_2.get("https://pc.weixin.qq.com")
driver_2.maximize_window()
# 点击下载按钮
driver_2.find_element_by_xpath('/html/body/div/div[1]/div/a').click()
6、操作cookie
# cookie操作 读取 添加 删除
from selenium import webdriver
import json
url = "https://www.baidu.com"
driver = webdriver.Chrome()
driver.get(url)
# 获取cookie
all_cookie = driver.get_cookies()
print(all_cookie) # 返回一个元素是字典的列表
# 保存cookie
f1 = open('cookie.txt', 'w')
f1 .write(json.dumps(all_cookie))
f1.close()
# 获取其中一个
cookie_1 = all_cookie[0]
print(cookie_1)
cookie_1['name'] = 'hahahaha'
print(all_cookie)
# 替换全部cookie
driver.delete_all_cookies() # 删除当前全部cookie
f2 = open('cookie.txt', 'r') # 读取新的cookie文件
cookie_new = json.loads(f2.read())
f2.close()
for c in cookie_new:
driver.add_cookie(c) # 添加新的cookie
driver.refresh() # 刷新页面