-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathfuckmeican.py
More file actions
executable file
·109 lines (83 loc) · 2.73 KB
/
fuckmeican.py
File metadata and controls
executable file
·109 lines (83 loc) · 2.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.wait import WebDriverWait
USER = ""
PASSWD = "123456"
ADDRESS_KEYWORD = '1903'
CROP_NAMES = {
u'广州简悦午餐': u'支竹牛腩饭',
u'广州简悦晚餐': u'麻辣牛辗饭',
}
browser = None
def login(user, password):
browser.get('http://meican.com/login')
browser.find_element_by_id("email").send_keys(user)
browser.find_element_by_id("password").send_keys(password)
browser.find_element_by_id("signin").click()
def is_switch_done(d):
c = d.find_element_by_xpath('/html/body').get_attribute('class')
return 'masked' not in c
def select(crop):
browser.find_element_by_id("more_tab").click()
crops = \
browser.find_elements_by_css_selector(
'.tab_tipsy_table >tbody > tr .tab_name > a')
for i in crops:
if i.text.find(crop) != -1:
i.click()
WebDriverWait(
browser, 10).until(is_switch_done)
return
raise Exception('select')
def is_search_done(d):
return d.find_element_by_css_selector('#regular_dish_revision_list')
def order(foodname):
browser.find_element_by_id(
"search_box").send_keys(foodname + Keys.RETURN)
WebDriverWait(browser, 10).until(is_search_done)
foods = browser.find_elements_by_css_selector(".name_outer .name")
for i in foods:
if i.text.find(foodname) != -1:
i.click()
WebDriverWait(browser, 10).until(
lambda x: x.find_element_by_id('cart').is_displayed())
return
raise Exception('order')
def set_address(address_keyword):
browser.find_element_by_id("cart").click()
WebDriverWait(browser, 10).until(
lambda x: x.find_element_by_id('corp_add_order_btn').is_displayed())
locations = \
browser.find_elements_by_css_selector("#corp_pick_up_location > div")
for i in locations:
if i.text.find(address_keyword) != -1:
i.click()
return
raise Exception('set_address')
def submit():
browser.find_element_by_id('corp_add_order_btn').click()
WebDriverWait(browser, 10).until(
lambda x: x.find_element_by_id('corp_order_actions').is_displayed())
def open_driver():
global browser
browser = webdriver.PhantomJS()
browser.set_window_size(1024, 768)
def run():
login(USER, PASSWD)
for k in CROP_NAMES:
browser.get('http://meican.com')
select(k)
order(CROP_NAMES[k])
set_address(ADDRESS_KEYWORD)
submit()
def main():
open_driver()
try:
run()
except:
pass
browser.quit()
if __name__ == '__main__':
main()