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

页面操作

posted @ 2018-09-02 23:25  大大的大笨熊  阅读(170)  评论(0编辑  收藏  举报