超详细 python + selenium 的安装配置和使用

文章更新于:2020-05-12
注1:Selenium 文档参见:The Selenium Browser Automation Project
注2:Selenium 的一个非官方教程:Selenium with Python

Selenium Browser Automation Project

    • 演示视频
    • 一、安装 selenium
    • 二、下载 webDriver 并配置环境变量
    • 三、代码实践
    • 四、元素的定位及窗口的操作!
      • 4.1、selenium.webdriver.common.action_chains
      • 4.2、selenium.webdriver.common.by
      • 4.3、selenium.webdriver.common.keys
      • 4.4、selenium.webdriver.Chrome
    • 五、headless 无头模式
      • 5.1、一个 headless 演示
    • 六、Enjoy!

演示视频

操作演示视频


点此链接全屏观看:更多操作视频传送门,点我观看全屏操作视频


一、安装 selenium

这里我们使用 pip 进行安装。

pip install selenium

超详细 python + selenium 的安装配置和使用_第1张图片

二、下载 webDriver 并配置环境变量

selenium 需要浏览器的内核驱动才能操控浏览器。
所以我们需要下载浏览器对应的内核驱动。

浏览器 下载链接 内核驱动下载链接
Chrome 谷歌浏览器 chromedriver
Firefox 火狐国际版 geckodriver
Firefox 火狐中国版 同上
Edge Edge浏览器 MicrosoftWebDriver
puppeteer puppeteer API 文档

下载浏览器并安装后。
下载对应版本号的 Driver 然后将其放在系统 path 路径下即可。
注:如果 Edge 浏览器的 Driver 不能用,将其改名为 MicrosoftWebDriver.exe 再试。

三、代码实践

import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

# 使用Edge浏览器访问百度
driver = webdriver.Edge()
driver.get("http://baidu.com")

# 输入“网络爬虫”
elem = driver.find_element_by_name("wd")
elem.clear()
elem.send_keys(u"网络爬虫")

# 重新输入“python 编程语言”并回车
time.sleep(1)
elem.clear()
elem.send_keys(u"python 编程语言")
elem.send_keys(Keys.RETURN)

# 3秒后关闭浏览器
time.sleep(3)
driver.close()

运行截图:
超详细 python + selenium 的安装配置和使用_第2张图片

四、元素的定位及窗口的操作!

4.1、selenium.webdriver.common.action_chains

click(self, on_element=None)
click_and_hold(self, on_element=None)
context_click(self, on_element=None)
double_click(self, on_element=None)
drag_and_drop(self, source, target)
drag_and_drop_by_offset(self, source, xoffset, yoffset)
key_down(self, value, element=None)
key_up(self, value, element=None)
move_by_offset(self, xoffset, yoffset)
move_to_element(self, to_element)
move_to_element_with_offset(self, to_element, xoffset, yoffset)
pause(self, seconds)
perform(self)
release(self, on_element=None)
reset_actions(self)
send_keys(self, *keys_to_send)
send_keys_to_element(self, element, *keys_to_send)

4.2、selenium.webdriver.common.by

CLASS_NAME = 'class name'
CSS_SELECTOR = 'css selector'
ID = 'id'
LINK_TEXT = 'link text'
NAME = 'name'
PARTIAL_LINK_TEXT = 'partial link text'
TAG_NAME = 'tag name'
XPATH = 'xpath'

4.3、selenium.webdriver.common.keys

ADD = '\ue025'
ALT = '\ue00a'
ARROW_DOWN = '\ue015'
ARROW_LEFT = '\ue012'
ARROW_RIGHT = '\ue014'
ARROW_UP = '\ue013'
BACKSPACE = '\ue003'
BACK_SPACE = '\ue003'
CANCEL = '\ue001'
CLEAR = '\ue005'
COMMAND = '\ue03d'
CONTROL = '\ue009'
DECIMAL = '\ue028'
DELETE = '\ue017'
DIVIDE = '\ue029'
DOWN = '\ue015'
END = '\ue010'
ENTER = '\ue007'
EQUALS = '\ue019'
ESCAPE = '\ue00c'
F1 = '\ue031'
F10 = '\ue03a'
F11 = '\ue03b'
F12 = '\ue03c'
F2 = '\ue032'
F3 = '\ue033'
F4 = '\ue034'
F5 = '\ue035'
F6 = '\ue036'
F7 = '\ue037'
F8 = '\ue038'
F9 = '\ue039'
HELP = '\ue002'
HOME = '\ue011'
INSERT = '\ue016'
LEFT = '\ue012'
LEFT_ALT = '\ue00a'
LEFT_CONTROL = '\ue009'
LEFT_SHIFT = '\ue008'
META = '\ue03d'
MULTIPLY = '\ue024'
NULL = '\ue000'
NUMPAD0 = '\ue01a'
NUMPAD1 = '\ue01b'
NUMPAD2 = '\ue01c'
NUMPAD3 = '\ue01d'
NUMPAD4 = '\ue01e'
NUMPAD5 = '\ue01f'
NUMPAD6 = '\ue020'
NUMPAD7 = '\ue021'
NUMPAD8 = '\ue022'
NUMPAD9 = '\ue023'
PAGE_DOWN = '\ue00f'
PAGE_UP = '\ue00e'
PAUSE = '\ue00b'
RETURN = '\ue006'
RIGHT = '\ue014'
SEMICOLON = '\ue018'
SEPARATOR = '\ue026'
SHIFT = '\ue008'
SPACE = '\ue00d'
SUBTRACT = '\ue027'
TAB = '\ue004'
UP = '\ue013'

4.4、selenium.webdriver.Chrome

函数 描述
back() 返回
close() 关闭当前窗口
delete_all_cookies() 删除所有 cookies
delete_cookie('name') 按名字删除 cookie
find_element(by='id', value=None) 查找给定标识符的元素
find_element_by_class_name('name') 通过类名来定位元素
find_element_by_css_selector('css_selector') 通过 css 选择器来定位元素
find_element_by_id('id') 通过 id 来定位元素
find_element_by_link_text('link_text') 通过链接内容来定位元素
find_element_by_partial_link_text('link_text') 通过链接部分内容来定位元素
find_element_by_name('name') 通过元素名称来定位元素
find_element_tag_name('name') 通过标签名来定位元素
find_element_by_xpath('xpath') 通过 xpath 来定位元素
find_elements(by='id', value=None)
find_elements_by_class_name('name')
find_elements_by_css_selector('css_selector')
find_elements_by_id('id')
find_elements_by_link_text('text')
find_elements_by_partial_link_text('link_text')
find_elements_by_name('name')
find_elements_by_tag_name('name')
find_elements_by_xpath('xpath')
forward() 向前
fullscreen_window() 全屏
get('url') 访问 url 页面
get_cookie(''name') 通过名称获取 cookie
get_cookies() 获取所有 cookies
get_log('log_type') 获取日志,类型有:browserdriverclientserver
get_screenshot_as_base64(self) 获取图片存为 base64 编码
get_screenshot_as_file('file_name') 获取图片存为文件,需要指定文件名,png 后缀
get_screenshot_as_png() 将图片存为二进制数据
get_window_position(windowHandle='current') 获取当前窗口的 x,y 位置
get_window_rect() 获取 x,y 坐标和当前窗口的宽高
get_window_size(windowHandle='current') 获取当前窗口的宽高
implicitly_wait('time_to_wait) 隐式等待一个元素加载或命令执行完成的时间。
maximize_window() 最大化
minimize_window() 最小化
refresh() 刷新
save_screenshot('findname') 保存屏幕截图
set_page_load_timeout('time_to_wait')
set_script_timeout('time_to_wait')
set_window_position(x, y, windowHandle='current')
set_window_rect(x, y, width, height)
set_window_size(width, height, windowHandle='current')
start_client()
start_session(capabilities, browser_profile=None)
stop_client()
switch_to_active_element()
switch_to_alert()
switch_to_default_content()
switch_to_frame('frame_reference') 切换到指定框架
switch_to_window('window_name') 切换到指定窗口

那么总的来说,查找元素分为以下两类:
1、查到单个元素

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

2、查找多个元素(返回列表)

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

上面的是公有方法,还有两个私有方法是:

 find_element()
 find_elements()
 # 这两个方法使用的时候,需要提供两个参数
 # 一个是 By.xx ,这里的 xx 分别是上面列出的几种定位方法的大写
 # 比如 find_element(By.ID, 'su')
 # 比如 find_element(By.CSS_SELECTOR, 'h1')

五、headless 无头模式

5.1、一个 headless 演示

from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
browser = webdriver.Chrome(options=chrome_options)
browser.get('http://baidu.com')
data = browser.page_source
print(data[:1000])

六、Enjoy!

你可能感兴趣的:(python编程)