浏览器驱动下载
Edge浏览器
Firefox浏览器
Safari浏览器
Chrome浏览器
PhantomJS浏览器
下载完成之后,添加到环境变量。
声明浏览器对象
selenium支持的浏览器版本很多,常用的有如下的几种。
from selenium import webdriver
browser = webdriver.Chrome()
browser = webdriver.Firefox()
browser = webdriver.Edge()
browser = webdriver.PhantomJS()
browser = webdriver.Safari()
访问网页
以浏览器为例,访问百度网页,并打印出网页源码。
from selenium import webdriver
browser = webdriver.Firefox()
browser.get(\'https://www.taobao.com\')
print(browser.page_source)
browser.close()
查找元素
selenium提供了一些快捷方式查找定位元素
先来看一个例子:
from selenium import webdriver
browser = webdriver.Firefox()
browser.get(\'https://www.taobao.com\')
input_first = browser.find_element_by_id(\'q\')
input_second = browser.find_element_by_css_selector(\'#q\')
input_third = browser.find_element_by_xpath(\'//*[@id="q"]\')
print(input_first, input_second, input_third)
browser.close()
定位方法如下:
# 查找定位单个元素,当有多个匹配时只会返回一个
find_element_by_id
find_element_by_name
find_element_by_xpath
find_element_by_link_text
find_element_by_partial_link_text
find_element_by_tag_name
find_element_by_class_name
find_element_by_css_selector
# 查找定位多个元素,以一个列表的形式返回
find_elements_by_name
find_elements_by_xpath
find_elements_by_link_text
find_elements_by_partial_link_text
find_elements_by_tag_name
find_elements_by_class_name
find_elements_by_css_selector
除此以外,selenium还提供了一种的更加灵活的方式进行元素的选择,使用By选择器类
先来看一个例子
from selenium import webdriver
from selenium.webdriver.common.by import By
browser = webdriver.Firefox()
browser.get(\'https://www.taobao.com\')
input_first = browser.find_element(By.ID, \'q\')
print(input_first)
browser.close()
By选择器的常用属性如下:
ID = "id"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
NAME = "name"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"
元素的交互操作
from selenium import webdriver
import time
browser = webdriver.Firefox()
browser.get(\'https://www.taobao.com\')
input = browser.find_element_by_id(\'q\')
input.send_keys(\'iPhone\')
time.sleep(1)
input.clear()
input.send_keys(\'iPad\')
button = browser.find_element_by_class_name(\'btn-search\')
button.click()
这里定位到输入框,并且传值过去,实现点击操作。
交互动作
以拖拽为例
import time
from selenium import webdriver
from selenium.webdriver import ActionChains
browser =webdriver.Firefox()
browser.get(\'http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable\')
browser.switch_to.frame(\'iframeResult\') # id = \'iframeResult\'
source = browser.find_element_by_css_selector(\'#draggable\') # 被拖拽的对象
target = browser.find_element_by_css_selector(\'#droppable\') # 目标对象
actions = ActionChains(browser)
actions.drag_and_drop(source, target)
actions.perform()
time.sleep(3)
browser.close()
执行js代码
下面是执行js脚本实现下拉,并且弹出警告框。
from selenium import webdriver
browser = webdriver.Firefox()
browser.get(\'https://www.zhihu.com/explore\')
browser.execute_script(\'window.scrollTo(0,document.body.scrollHeight)\')
browser.execute_script(\'alert("To Bottom")\')
元素属性相关
- 获取属性
from selenium import webdriver
from selenium.webdriver import ActionChains
browser = webdriver.Firefox()
url = \'https://www.zhihu.com/explore\'
browser.get(url)
logo = browser.find_element_by_id(\'zh-top-link-logo\')
print(logo)
print(logo.get_attribute(\'class\'))
- 获取标签文本
from selenium import webdriver
browser = webdriver.Firefox()
browser.get(\'https://www.zhihu.com/explore\')
input = browser.find_element_by_class_name(\'zu-top-add-question\')
print(input.text)
- 获取id,位置,标签名,大小
from selenium import webdriver
browser = webdriver.Firefox()
browser.get(\'https://www.zhihu.com/explore\')
input = browser.find_element_by_class_name(\'zu-top-add-question\')
print(input.id) # 6f32656c-9aa0-4bea-a6d1-f697424cb83c
print(input.location) # {\'x\': 874, \'y\': 7}
print(input.tag_name) # button
print(input.size) # {\'height\': 32.0, \'width\': 66.0}