Selenium是一个自动化测试工具,可以通过它来控制浏览器自动执行一系列操作。它常用于UI界面测试和爬虫。这里介绍几个Selenium的常用用法:
1 启动浏览器
可以使用WebDriver启动不同的浏览器,如:
from selenium import webdriver
#启动Chrome浏览器
driver=webdriver.Chrome()
#启动Firefox浏览器
driver=webdriver.Firefox()
#启动Safari浏览器
driver=webdriver.Safari()
2 设置窗口尺寸
可以使用set_window_size()方法对设置窗口尺寸:
#设置具体窗口尺寸
driver.set_window_size(500,500)
#最大化窗口尺寸
driver.maximize_window()
3 访问网页
使用get()方法访问网页:
from selenium import webdriver
driver.get("https://www.baidu.com")
4 查找网页元素
可以通过ID、CSS选择器、XPATH等来查找网页元素:
from selenium import webdriver
#通过ID查找
driver.find_element_by_id("kw")
#通过CSS选择器查找
driver.find_element_by_css_selector("#kw")
#通过XPARH查找
driver.find_element_by_xpath("//input[@id='kw']")
4.1 通过CSS选择器查找
这里用一个简单的网页为例,说明如何通过CSS选择器来查找网页元素:
html
<!DOCTYPE html>
<html>
<head>
<title>CSS Selector Demo</title>
</head>
<body>
<div id="header">
<h1>CSS Selector Demo</h1>
</div>
<div class="content">
<ul>
<li><a href="#">Link 1</a></li>
<li><a href="#">Link 2</a></li>
<li><a href="#">Link 3</a></li>
</ul>
</div>
<div id="footer">
<p>Copyright © 2020</p>
</div>
</body>
</html>
对应的Python代码使用Selenium如下:
rom selenium import webdriver
driver = webdriver.Chrome()
driver.get("file:///your_path/css_selector_demo.html")
# 通过ID查找元素
driver.find_element_by_css_selector("#header")
# 通过class查找元素
driver.find_element_by_css_selector(".content")
# 通过标签查找元素
driver.find_element_by_css_selector("ul")
# 通过子选择器查找元素
driver.find_element_by_css_selector("div.content ul li a")
# 通过后代选择器查找元素
driver.find_element_by_css_selector("div#header h1")
# 通过属性查找元素
driver.find_element_by_css_selector("a[href='#']")
driver.quit()
通过ID选择器(#header)、Class选择器(.content)、标签选择器(ul)、子选择器(div.content ul li a)、后代选择器(div#header h1)以及属性选择器(a[href=‘#’]),我们可以灵活定位到网页中的不同元素。
5 操作网页元素
5.1 简易操作
可以点击、输入文本、清除文本等操作:
# 点击元素
element.click()
# 输入文本
element.send_keys("selenium")
# 清除元素文本
element.clear()
5.2 ActionChains类方法
在selenium常配合webdriver中ActionChains类方法对网页进行操作,ActionChains类封装了一系列滑鼠操作和键盘操作,可以用来模拟复杂的用户交互行为。这里用一个简单的网页为例,演示一下ActionChains的常用方法:
from selenium import webdriver
from selenium.webdriver import ActionChains
driver = webdriver.Chrome()
driver.get("file:///your_path/action_chains_demo.html")
# 定位到元素
div1 = driver.find_element_by_id("div1")
div2 = driver.find_element_by_id("div2")
button = driver.find_element_by_id("button1")
# ActionChains对象
action = ActionChains(driver)
# 鼠标悬停在div1上
action.move_to_element(div1).perform()
# 鼠标拖拽div1到div2
action.drag_and_drop(div1, div2).perform()
# 鼠标点击button
action.click(button).perform()
# 鼠标双击div1
action.double_click(div1).perform()
# 鼠标右击div2
action.context_click(div2).perform()
# 按住键盘的Ctrl键
action.key_down(Keys.CONTROL).perform()
# 释放Ctrl键
action.key_up(Keys.CONTROL).perform()
#屏幕向左移动
action.send_keys(Keys.LEFT).perform()
#屏幕向上移动
action.send_keys(Keys.UP).perform()
driver.quit()
我们可以使用move_to_element()方法进行鼠标悬停,drag_and_drop()进行拖拽,click()和double_click()进行点击,context_click()进行右击,key_down()和key_up()进行键盘操作等。
ActionChains可以灵活模拟复杂的用户交互行为,是Selenium的一个非常实用的功能类。
6 执行JavaScript
可以使用execute_script()方法执行JavaScript代码:
driver.execute_script("document.title='selenium';")
7 截屏
可以使用get_screenshot_as_file()方法对当前网页进行截屏:
driver.get_screenshot_as_file("baidu.png")
8 关闭浏览器
使用quit()方法关闭浏览器:
driver.quit()