Selenium的使用
selenium现在最新的版本为3.0.1,以此为标准进行讲解。selenium官方地址为https://www.seleniumhq.org/
-
pip install selenium==3.0.1
-
调用浏览器必须下载一个类似补丁的文件,比如Firefox的为geckodriver,详细官网有:[https://www.seleniumhq.org/download/],根据自己操作系统,下载指定的驱动文件。
-
接着配置环境变量,在shell中执行export PATH = $PATH:/home/....../geckodriver.exe(在window我测试不能通过path和绝对路经来引用,只能通过相对路径,),代码如下:
#selenium.webdriver 模块提供了所有WebDriver的实现,
#当前支持的WebDriver有: Firefox, Chrome, IE and Remote。 `Keys`类提供键盘按键的支持,比如:RETURN, F1, ALT等
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Firefox(executable_path='..\geckodriver.exe')
driver.get("http://www.baidu.com")
#下一行是用assert的方式确认标题是否包含“Python”一词。 (译注:assert 语句将会在之后的语句返回false后抛出异常,详细内容可以自行百度)
assert u'百度' in driver.title
elem = driver.find_element_by_name("wd")
#接下来,我们发送了一个关键字,这个方法的作用类似于你用键盘输入关键字。 特殊的按键可以使用Keys类来输入,该类继承自 selenium.webdriver.common.keys, 为了安全起见,我们先清除input输入框中#的任何预填充的文本(例如:”Search”),从而避免我们的搜索结果受影响:
elem.clear()
elem.send_keys(u"网络爬虫")
elem.send_keys(Keys.RETURN)
time.sleep(3)
assert u'网络爬虫' not in driver.page_source
#关闭浏览器窗口,你还可以使用quit方法代替close方法, quit将关闭整个浏览器,而_close——只会关闭一个标签页, 如果你只打开了一个标签页,大多数浏览器的默认行为是关闭浏览器
driver.close()
运行成功会自动调用Firefox访问百度,并且需要selenium 版本达到3.7.0以上,不然调用出Firefox,但访问百度出错,升版本'pip install -U selenium'
元素选取
- 要想对页面进行操作,首先做的是选中页面元素,方法如下表
定位一个元素 | 定位多个元素 | 含义 |
---|---|---|
find_element_by_id | find_elements_by_id | |
find_element_by_name | find_elements_by_name | 元素名称 |
find_element_by_xpath | find_elements_by_xpath | XPath表达式 |
find_element_by_link_text | find_elements_by_link_text | 超链接文本 |
find_element_by_partial_link_text | find_elements_by_partial_link_text | 部分超链接文本 |
find_element_by_tag_name | find_elements_by_tag_name | 标记名称 |
find_element_by_class_name | find_elements_by_class_name | 类名 |
find_element_by_css_selector | find_elements_by_css_selector | css选择器 |
- 除了上述的公共方法,下面还有两个私有方法,在你查找也页面元素的时候也许有用。 他们是 find_element 和 find_elements 。
from selenium.webdriver.common.by import By
driver.find_element(By.XPATH, '//button[text()="Some text"]')
driver.find_elements(By.XPATH, '//button')
- 下面是 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"
详细点击:https://selenium-python-zh.readthedocs.io/en/latest/locating-elements.html