文章目录
  1. 1. What is selenium?
  2. 2. Selenium安装
  3. 3. 范例一:网页截图
  4. 4. 范例二:模拟鼠标点击等行为

What is selenium?

Selenium 是一个可以让浏览器自动化地执行一系列任务的工具,常用于自动化测试

Selenium安装

参照另外一教程文章Windows下Python easy_install和pip的安装:

easy_install selenium 

范例一:网页截图

#!/usr/bin/env python
# coding: utf-8

import os, sys, time, datetime
import urllib
import urllib2
from selenium import webdriver

reload(sys)
sys.setdefaultencoding('utf-8')

def mock_screenshot(url, width, height, imgPath = 'screenshot.png'):
    # browser = webdriver.PhantomJS('E:\Downloads\phantomjs-1.9.7-windows\phantomjs.exe')  #浏览器初始化;Win下需要设置phantomjs路径,linux下置空即可
    browser = webdriver.Firefox()
    browser.set_window_size(width, height) #参考当前PC的分辨率
    browser.get(url)  # 打开网页

    browser.execute_script("""
        (function () {
          var y = 0;
          var step = 100;
          window.scroll(0, 0);

          function f() {
            if (y < document.body.scrollHeight) {
              y += step;
              window.scroll(0, y);
              setTimeout(f, 50);
            } else {
              window.scroll(0, 0);
              document.title += "scroll-done";
            }
          }

          setTimeout(f, 1000);
        })();
      """)

    for i in xrange(1024):
        if "scroll-done" in browser.title:
          break
        time.sleep(1)

    browser.save_screenshot(imgPath)

    browser.quit()  # 关闭浏览器。当出现异常时记得在任务浏览器中关闭PhantomJS,因为会有多个PhantomJS在运行状态,影响电脑性能

注意到,上面的代码中,并没有在打开页面后立即截图,而是先在页面上执行了一段Javascript脚本,先将页面的滚动条拖到最下方,再拖回顶部,然后才截图。这样的好处是如果页面下方有一些ajax延迟加载的内容,在这个操作之后一般其他内容也都已加载了,如此截图才完整些。

范例二:模拟鼠标点击等行为

由范例一我们可以举一反三,我们可以执行某一段js脚本或ajax请求以获取指定或我们想要的内容,甚至模拟鼠标点击等行为让浏览器自动化地执行某些操作。

# other coding above

browser.get(url)  # 打开网页

jsActionElem = browser.find_element_by_class_name('tit_a')

jsActionElem.click()

# other coding continuing ...
文章目录
  1. 1. What is selenium?
  2. 2. Selenium安装
  3. 3. 范例一:网页截图
  4. 4. 范例二:模拟鼠标点击等行为