selenuim和xpath总结(自用)

39 阅读2分钟

介绍

  • 首先Selenium是一个用于Web应用程序测试的工具,也就是说最初是用于测试的。。后来我都用它来做爬虫。。。
  • xpath是定位网页标签的工具。。。

selenium版本问题

  • 指定版本就可行,最好不要用最新的,因为方法可能会不一样,还有可能会有未知错误。就我下面这个就好的很。

pip install selenium==3.0.2

驱动下载问题

  • 其实chromedriver不是很好找,网上大部分都是老版本的驱动,最新版本的chrome还是不好找的。但是还是被我找到了,用下面这个链接就好

googlechromelabs.github.io/chrome-for-…

selenium常用代码

options = webdriver.ChromeOptions() # 配置额外参数
options.add_argument('--headless') # 不显示浏览器窗口
browser = webdriver.Chrome()     # 创建一个driver对象
browser.get('http://www.baidu.com')      # 控制浏览器打开指定的url
browser.quit()    # 关闭浏览器
browser.close()   # 关闭当前页
browser.maximize_window()    # 浏览器窗口最大化
browser.page_source    # 当前网页源码,注意获取的时候可能想要的数据不在页面上
node.send_keys() # 向文本框发送内容
node.click()    # 点击
node.clear() # 清空文本
node.get_attribute('属性名')  # 获取节点属性值
node.text   # 获取节点文本内容(包含子节点和后代节点)
xx = browser.execute_script('return js代码')  # js有return时python可以接受返回值
  • 还有一些 iframe处理、tabs处理、模拟人工鼠标操作、对页面的处理等等

xpath常用语法

符号功能
//表示在整个文本中查找,是一种相对路径
/表示则表示从根节点开始查找,是一种绝对路径
text()找出文本值
@找出标签对应的属性值,比如@href就是找出对应的href链接
.表示当前节点
..表示当前节点的父节点
string(.)选取节点下的文本和所有子节点的文本
//title[@lang='eng'] :表示选择所有lang属性的值等于"eng"的title节点。
/bookstore/book[last()] :表示选择bookstore的最后一个book子元素。
/bookstore/book[last()-1] :表示选择bookstore的倒数第二个book子元素。
/bookstore/book[position()<3] :表示选择bookstore的前两个book子元素。
//div[ends-with(@id, 'require')]** 选取 id 属性以 require 结尾
//div[starts-with(@id, 'data')]** 选取 id 属性以 data 开头的 div 元素
//div[contains(@id, 'data')]** 选取 id 属性包含 data 的 div 元素