Python with selenium webDriver

Table of Contents

install selenium

$ sudo apt-get install python-pip
$ sudo pip install selenium

use

#!/usr/bin/env python

from selenium import webdriver

browser = webdriver.Firefox()
browser.get('http://www.ubuntu.com/')

example

Use Firefox to check whether iphone6 is available and send the email once availability of it

#!/usr/bin/env python
#coding=utf8
from selenium import webdriver
from selenium.webdriver.support.ui import Select
import time
import smtplib


def sendemail(from_addr, to_addr_list, cc_addr_list,
              subject, message,
              login, password,
              smtpserver='smtp.gmail.com:587'):
    header  = 'From: %s\n' % from_addr
    header += 'To: %s\n' % ','.join(to_addr_list)
    header += 'Cc: %s\n' % ','.join(cc_addr_list)
    header += 'Subject: %s\n\n' % subject
    message = header + message

    server = smtplib.SMTP(smtpserver)
    server.ehlo()
    server.starttls()
    server.login(login,password)
    problems = server.sendmail(from_addr, to_addr_list, message)
    server.quit()

def check_iphone(browser) :
        products = Select(browser.find_element_by_name("products"))
        if products.options[0].text == '':
                return
        #products.select_by_visible_text(u'iPhone 6 Plus')
        products.select_by_visible_text(u'iPhone 6')
        stores = Select(browser.find_element_by_name("stores"))
        if stores.options[0].text == '':
                return
        #stores.select_by_visible_text('Aix-en-Provence')
        stores.select_by_visible_text('Festival Walk')
        check_availables = browser.find_elements_by_class_name("isAvailableText")
        for avail in check_availables:
                if avail.text != u'暫無供應':
                        print avail.text
                        sendemail('xxx@gmail.com', ['someone@gmail.com', 'someone@gmail.com'],
                                [], 'iphone', 'iphone', 'username', 'pwd')
                        return
url = "https://reserve.cdn-apple.com/HK/zh_HK/reserve/iPhone/availability"
#url = 'https://reserve.cdn-apple.com/FR/fr_FR/reserve/iPhone/availability'

def run_func(): 
    browser = webdriver.Firefox()
    browser.get(url)

    while True:
        browser.refresh()
        time.sleep(0.05)
        try:
            check_iphone(browser)
        except:
            print "some error"
            run_func()
        time.sleep(1)
run_func()

Author: Shi Shougang

Created: 2015-03-05 Thu 23:19

Emacs 24.3.1 (Org mode 8.2.10)

Validate