pip install selenium
https://www.selenium.dev/zh-cn/documentation/webdriver/getting_started/install_drivers/
from selenium import webdriver
from selenium.webdriver.common.by import By
#初始化驱动
driver = webdriver.Chrome()
#打开页面
driver.get("https://www.google.com")
#获取页面标题
driver.title # => "Google"
#隐式等待 会在指定的时间范围内不断的查找元素,直到找到元素或超时,特点是必须等待整个页面加载完成。
driver.implicitly_wait(0.5)
#通过name定位输入框元素
search_box = driver.find_element(By.NAME, "q")
#通过name定位点击按钮
search_button = driver.find_element(By.NAME, "btnK")
#向输入框填文字
search_box.send_keys("Selenium")
#点击添加按钮
search_button.click()
#获取输入框内容
driver.find_element(By.NAME, "q").get_attribute("value") # => "Selenium"
#退出控制
driver.quit()
#获取标题
driver.title
#获取当前 URL
driver.current_url
#打开网站
driver.get("https://selenium.dev")
#后退一个页面
driver.back()
#前进一个页面
driver.forward()
#########警告框
# 点击警告的链接
driver.find_element(By.LINK_TEXT, "See an example alert").click()
# 等待警告的加载
alert=wait.until(expected_conditions.alert_is_present())
# 存储警告的内容
text = alert.text
#点击接受按钮
alert.accept()
########Confirm 确认框
# 点击警告框
driver.find_element(By.LINK_TEXT, "See a sample confirm").click()
# 等待警告框的加载
wait.until(expected_conditions.alert_is_present())
#用变量存储警告的内容
alert = driver.switch_to.alert
# 存储警告的内容
text = alert.text
#点击拒绝按钮
alert.dismiss()
#点击接受按钮
#alert.accept()
#######Prompt 提示框
# 点击警告链接
driver.find_element(By.LINK_TEXT, "See a sample prompt").click()
# 等待警告加载
wait.until(expected_conditions.alert_is_present())
# 用变量存储警告的内容
alert = Alert(driver)
# 输入您的消息
alert.send_keys("Selenium")
#点击接受按钮
alert.accept()
######### 添加cookie
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.example.com")
#将cookie添加到当前的浏览器
driver.add_cookie({"name": "key", "value": "value"})
######## 获取命名的 Cookie
from selenium import webdriver
driver = webdriver.Chrome()
# 导航到指定网站
driver.get("http://www.example.com")
# 将cookie添加到当前的浏览器
driver.add_cookie({"name": "foo", "value": "bar"})
# 获取名称为foo的cookie
print(driver.get_cookie("foo"))
######## 获取全部 Cookies
from selenium import webdriver
driver = webdriver.Chrome()
# 导航到指定网站
driver.get("http://www.example.com")
#将cookie添加到当前的浏览器
driver.add_cookie({"name": "test1", "value": "cookie1"})
driver.add_cookie({"name": "test2", "value": "cookie2"})
# 获取全部 Cookies
print(driver.get_cookies())
###### 删除 Cookie
from selenium import webdriver
driver = webdriver.Chrome()
# 导航到指定网站
driver.get("http://www.example.com")
#将cookie添加到当前的浏览器
driver.add_cookie({"name": "test1", "value": "cookie1"})
driver.add_cookie({"name": "test2", "value": "cookie2"})
# 删除名称为test1的cookie
driver.delete_cookie("test1")
###### 删除所有 Cookies
from selenium import webdriver
driver = webdriver.Chrome()
# 导航到指定网站
driver.get("http://www.example.com")
#将cookie添加到当前的浏览器
driver.add_cookie({"name": "test1", "value": "cookie1"})
driver.add_cookie({"name": "test2", "value": "cookie2"})
# 删除所有cookie
driver.delete_all_cookies()
############## 使用 WebElement
# 存储网页元素
iframe = driver.find_element(By.CSS_SELECTOR, "#modal > iframe")
# 切换到选择的 iframe
driver.switch_to.frame(iframe)
# 单击按钮
driver.find_element(By.TAG_NAME, 'button').click()
###### 使用 name 或 id
# 通过 id 切换框架
driver.switch_to.frame('buttonframe')
# 单击按钮
driver.find_element(By.TAG_NAME, 'button').click()
########## 使用索引
# 基于索引切换到第 2 个 iframe
iframe = driver.find_elements_by_tag_name('iframe')[1]
# 切换到选择的 iframe
driver.switch_to.frame(iframe)
# 切回到默认内容
driver.switch_to.default_content()
############ 离开框架
#####获得当前窗口的窗口句柄
driver.current_window_handle
# 打开新标签页并切换到新标签页
driver.switch_to.new_window('tab')
# 打开一个新窗口并切换到新窗口
driver.switch_to.new_window('window')
#关闭标签页或窗口
driver.close()
#切回到之前的标签页或窗口
driver.switch_to.window(original_window)
#会话结束时退出浏览器
driver.quit()
############# 设置窗口
#获取窗口大小
# 分别获取每个尺寸
width = driver.get_window_size().get("width")
height = driver.get_window_size().get("height")
# 或者存储尺寸并在以后查询它们
size = driver.get_window_size()
width1 = size.get("width")
height1 = size.get("height")
#设置窗口大小
driver.set_window_size(1024, 768)
#得到窗口的位置
# 分别获取每个尺寸
x = driver.get_window_position().get('x')
y = driver.get_window_position().get('y')
# 或者存储尺寸并在以后查询它们
position = driver.get_window_position()
x1 = position.get('x')
y1 = position.get('y')
# 设置窗口位置 将窗口移动到主显示器的左上角
driver.set_window_position(0, 0)
#最大化窗口
driver.maximize_window()
#最小化窗口
driver.minimize_window()
#全屏窗口
driver.fullscreen_window()
######## 屏幕截图
from selenium import webdriver
driver = webdriver.Chrome()
# 打开网页
driver.get("http://www.example.com")
# 返回和base64编码的字符串到图像
driver.save_screenshot('./image.png')
driver.quit()
####### 执行js脚本
# 获取头部元素
header = driver.find_element(By.CSS_SELECTOR, "h1")
# 执行JavaScript来捕获header元素的innerText
driver.execute_script('return arguments[0].innerText', header)
#通过类选择器 获取焦点到指定元素
vegetable = driver.find_element(By.CLASS_NAME, "tomatoes")
#通过Id选择器 获取焦点到指定元素
fruits = driver.find_element(By.ID, "fruits")
fruit = fruits.find_elements_by_id("tomatoes")
#通过CSS选择器 获取焦点到指定元素
fruit = driver.find_element_by_css_selector("#fruits .tomatoes")
#通过标签选择器 获取焦点到指定元素
plants = driver.find_elements(By.TAG_NAME, "li")
#通过标签选择器 获取一组元素
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Firefox()
# Navigate to Url
driver.get("https://www.example.com")
# 获取所有的 P 标签 driver.find_elements
elements = driver.find_elements(By.TAG_NAME, 'p')
for e in elements:
print(e.text)
## 获取元素CSS值
# Navigate to Url
driver.get('https://www.example.com')
# 检索链接文本的计算样式属性'color'
cssValue = driver.findElement(By.LINK_TEXT, "More information...").value_of_css_property('color')
fruit = driver.find_element_by_css_selector("#fruits .tomatoes")
from selenium import webdriver
from selenium.webdriver.common.by import By
#初始化驱动
driver = webdriver.Chrome()
#打开页面
driver.get("https://www.google.com")
#获取页面标题
driver.title # => "Google"
#隐式等待 会在指定的时间范围内不断的查找元素,直到找到元素或超时,特点是必须等待整个页面加载完成。
driver.implicitly_wait(0.5)
#通过name定位输入框元素
search_box = driver.find_element(By.NAME, "q")
#通过name定位点击按钮
search_button = driver.find_element(By.NAME, "btnK")
#向输入框填文字
search_box.send_keys("Selenium")
#点击添加按钮
search_button.click()
#获取输入框内容
driver.find_element(By.NAME, "q").get_attribute("value") # => "Selenium"
#退出控制
driver.quit()
### 显示等待 WebDriverWait(显式等待)通常是我们自定义的一个函数代码,这段代码用来等待某个元素加载完成,再继续执行后续的代码
WebDriverWait(driver).until(document_initialised)
#隐式等待 在不影响程序执行的情况下等待
driver.implicitly_wait(0.5)
######## 屏幕截图
from selenium import webdriver
### 元素屏幕截图
# 返回和base64编码的字符串到图像
driver.save_screenshot('./image.png')
### 返回页面源码 可以当爬虫使用
page=driver.page_source()
selenium官方教程
https://www.selenium.dev/zh-cn/documentation/webdriver/browser/