forked from mrlan/EnglishPal
				
			Compare commits
	
		
			8 Commits 
		
	
	
		
			Bug585-zha
			...
			Bug400-Qiu
		
	
	| Author | SHA1 | Date | 
|---|---|---|
|  | 84468cf28a | |
|  | e9675ec8ee | |
|  | 3f6dc2b1f4 | |
|  | 304f720779 | |
|  | c264400794 | |
|  | 6306fdbbfc | |
|  | a35a21074a | |
|  | 670e5a2083 | 
|  | @ -6,8 +6,8 @@ css: | ||||||
| # 全局引入的js文件地址 | # 全局引入的js文件地址 | ||||||
| js: | js: | ||||||
|   head: # 在页面加载之前加载 |   head: # 在页面加载之前加载 | ||||||
|     # - static/js/APlayer.js |     - static/js/jquery.js | ||||||
|     # - static/js/Meting.js |     - static/js/word_operation.js | ||||||
|   bottom: # 在页面加载完之后加载 |   bottom: # 在页面加载完之后加载 | ||||||
|     - static/js/fillword.js |     - static/js/fillword.js | ||||||
|     - static/js/highlight.js |     - static/js/highlight.js | ||||||
|  |  | ||||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							|  | @ -0,0 +1,43 @@ | ||||||
|  | function familiar(index) { | ||||||
|  |     let username = $("#username").text(); | ||||||
|  |     let word = $("#word_" + index).text(); | ||||||
|  |     let freq = $("#freq_" + index).text(); | ||||||
|  |     $.ajax({ | ||||||
|  |         type:"GET", | ||||||
|  |         url:"/" + username + "/" + word + "/familiar", | ||||||
|  |         success:function(response){ | ||||||
|  |             let new_freq = freq - 1; | ||||||
|  |             if(new_freq <1) { | ||||||
|  |                 $("#p_" + index).remove(); | ||||||
|  |             } else { | ||||||
|  |                 $("#freq_" + index).text(new_freq); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     }); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function unfamiliar(index) { | ||||||
|  |     let username = $("#username").text(); | ||||||
|  |     let word = $("#word_" + index).text(); | ||||||
|  |     let freq = $("#freq_" + index).text(); | ||||||
|  |     $.ajax({ | ||||||
|  |         type:"GET", | ||||||
|  |         url:"/" + username + "/" + word + "/unfamiliar", | ||||||
|  |         success:function(response){ | ||||||
|  |             let new_freq = parseInt(freq) + 1; | ||||||
|  |             $("#freq_" + index).text(new_freq); | ||||||
|  |         } | ||||||
|  |     }); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function delete_word(index) { | ||||||
|  |     let username = $("#username").text(); | ||||||
|  |     let word = $("#word_" + index).text(); | ||||||
|  |     $.ajax({ | ||||||
|  |         type:"GET", | ||||||
|  |         url:"/" + username + "/" + word + "/del", | ||||||
|  |         success:function(response){ | ||||||
|  |             $("#p_" + index).remove(); | ||||||
|  |         } | ||||||
|  |     }); | ||||||
|  | } | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
| </head> | </head> | ||||||
| <body> | <body> | ||||||
| <div class="container-fluid"> | <div class="container-fluid"> | ||||||
|     <p><b>English Pal for <font color="red">{{ username }}</font></b> |     <p><b>English Pal for <font id="username" color="red">{{ username }}</font></b> | ||||||
|         <a class="btn btn-secondary" href="/logout" role="button">退出</a> |         <a class="btn btn-secondary" href="/logout" role="button">退出</a> | ||||||
|         <a class="btn btn-secondary" href="/reset" role="button">重设密码</a> |         <a class="btn btn-secondary" href="/reset" role="button">重设密码</a> | ||||||
|     </p> |     </p> | ||||||
|  | @ -57,37 +57,18 @@ | ||||||
|         <p><b>我的生词簿</b></p> |         <p><b>我的生词簿</b></p> | ||||||
|         {% for x in lst3 %} |         {% for x in lst3 %} | ||||||
|             {% set word = x[0] %} |             {% set word = x[0] %} | ||||||
| 
 |  | ||||||
|             {% set freq = x[1] %} |             {% set freq = x[1] %} | ||||||
|             {% if session.get('thisWord') == x[0] and session.get('time') == 1 %} |             {% if session.get('thisWord') == x[0] and session.get('time') == 1 %} | ||||||
|                 <a name="aaa"></a> |                 <a name="aaa"></a> | ||||||
|             {% endif %} |             {% endif %} | ||||||
|             {% if freq > 1 %} |             <p id='p_{{ loop.index0 }}' class="new-word" > | ||||||
|                 <p class="new-word"> |                 <a id="word_{{ loop.index0 }}"  class="btn btn-light" href='http://youdao.com/w/eng/{{ word }}/#keyfrom=dict2.index' | ||||||
|                     <a class="btn btn-light" href='http://youdao.com/w/eng/{{ word }}/#keyfrom=dict2.index' |  | ||||||
|                    role="button">{{ word }}</a> |                    role="button">{{ word }}</a> | ||||||
|                     ( |                 ( <a id="freq_{{ loop.index0 }}" title="{{ word }}">{{ freq }}</a> ) | ||||||
|                     <a title="{{ word }}">{{ freq }}</a> |                 <a class="btn btn-success" onclick="familiar({{ loop.index0 }})" role="button">熟悉</a> | ||||||
|                     ) |                 <a class="btn btn-warning" onclick="unfamiliar({{ loop.index0 }})" role="button">不熟悉</a> | ||||||
| 
 |                 <a class="btn btn-danger" onclick="delete_word({{ loop.index0 }})" role="button">删除</a> | ||||||
|                     <a class="btn btn-success" href={{ username }}/{{ word }}/familiar role="button">熟悉</a> |  | ||||||
|                     <a class="btn btn-warning" href={{ username }}/{{ word }}/unfamiliar role="button">不熟悉</a> |  | ||||||
|                     <a class="btn btn-danger" href={{ username }}/{{ word }}/del role="button">删除</a> |  | ||||||
|             </p> |             </p> | ||||||
|             {% else %} |  | ||||||
|                 <p class="new-word"> |  | ||||||
|                     <a class="btn btn-light" href='http://youdao.com/w/eng/{{ word }}/#keyfrom=dict2.index' |  | ||||||
|                        role="button">{{ word }}</a> |  | ||||||
|                     ( |  | ||||||
|                     <a title="{{ word }}">{{ freq }}</a> |  | ||||||
|                     ) |  | ||||||
|                     <a class="btn btn-success" href={{ username }}/{{ word }}/familiar role="button">熟悉</a> |  | ||||||
|                     <a class="btn btn-warning" href={{ username }}/{{ word }}/unfamiliar role="button">不熟悉</a> |  | ||||||
|                     <a class="btn btn-danger" href={{ username }}/{{ word }}/del role="button">删除</a> |  | ||||||
|                 </p> |  | ||||||
|             {% endif %} |  | ||||||
|         {% else %} |  | ||||||
|             <a href='http://youdao.com/w/eng/{{ word }}/#keyfrom=dict2.index'>{{ word }}</a>{{ freq }} |  | ||||||
|         {% endfor %} |         {% endfor %} | ||||||
|         <input id="selected-words2" type="hidden" value="{{ words }}"> |         <input id="selected-words2" type="hidden" value="{{ words }}"> | ||||||
|     {% endif %} |     {% endif %} | ||||||
|  |  | ||||||
|  | @ -0,0 +1,91 @@ | ||||||
|  | from time import sleep | ||||||
|  | from selenium import webdriver | ||||||
|  | 
 | ||||||
|  | # 获取浏览器驱动,并且打开响应的网址 | ||||||
|  | driver = webdriver.Chrome(executable_path="C:\Program Files (x86)\Google\ChromeDriver\chromedriver.exe") | ||||||
|  | 
 | ||||||
|  | HOME_PAGE = "http://127.0.0.1:5000/" | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def test_word_operation(): | ||||||
|  |     try: | ||||||
|  |         login() | ||||||
|  |         unfamiliar() | ||||||
|  |         familiar() | ||||||
|  |         delete() | ||||||
|  |     finally: | ||||||
|  |         driver.quit() | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def login(): | ||||||
|  |     driver.get(HOME_PAGE) | ||||||
|  | 
 | ||||||
|  |     assert 'English Pal -' in driver.page_source | ||||||
|  | 
 | ||||||
|  |     # login | ||||||
|  |     elem = driver.find_element_by_link_text('登录') | ||||||
|  |     elem.click() | ||||||
|  |     sleep(2) | ||||||
|  |     uname = 'peter' | ||||||
|  |     password = 'peter' | ||||||
|  | 
 | ||||||
|  |     elem = driver.find_element_by_name('username') | ||||||
|  |     elem.send_keys(uname) | ||||||
|  | 
 | ||||||
|  |     elem = driver.find_element_by_name('password') | ||||||
|  |     elem.send_keys(password) | ||||||
|  | 
 | ||||||
|  |     # find the login button | ||||||
|  |     elem = driver.find_element_by_xpath('/html/body/form/p[3]/input') | ||||||
|  |     elem.click() | ||||||
|  | 
 | ||||||
|  |     assert 'EnglishPal Study Room for ' + uname in driver.title | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def familiar(): | ||||||
|  |     sleep(5) | ||||||
|  | 
 | ||||||
|  |     elem = driver.find_element_by_xpath('//*[@id="p_0"]/a[3]') | ||||||
|  | 
 | ||||||
|  |     count = int(elem.find_element_by_xpath('//*[@id="freq_0"]').text) | ||||||
|  | 
 | ||||||
|  |     loop = 3 | ||||||
|  | 
 | ||||||
|  |     for i in range(loop): | ||||||
|  |         elem.click() | ||||||
|  |         sleep(1) | ||||||
|  | 
 | ||||||
|  |     new_count = int(driver.find_element_by_xpath('//*[@id="freq_0"]').text) | ||||||
|  | 
 | ||||||
|  |     assert count - loop == new_count | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def unfamiliar(): | ||||||
|  |     sleep(5) | ||||||
|  | 
 | ||||||
|  |     elem = driver.find_element_by_xpath('//*[@id="p_0"]/a[4]') | ||||||
|  | 
 | ||||||
|  |     count = int(elem.find_element_by_xpath('//*[@id="freq_0"]').text) | ||||||
|  | 
 | ||||||
|  |     loop = 2 | ||||||
|  | 
 | ||||||
|  |     for i in range(loop): | ||||||
|  |         elem.click() | ||||||
|  |         sleep(1) | ||||||
|  | 
 | ||||||
|  |     new_count = int(driver.find_element_by_xpath('//*[@id="freq_0"]').text) | ||||||
|  | 
 | ||||||
|  |     assert count + loop == new_count | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def delete(): | ||||||
|  |     sleep(3) | ||||||
|  |     word = driver.find_element_by_xpath('//*[@id="word_0"]').text | ||||||
|  |     elem = driver.find_element_by_xpath('//*[@id="p_0"]/a[5]') | ||||||
|  |     elem.click() | ||||||
|  |     sleep(5) | ||||||
|  |     driver.refresh() | ||||||
|  |     driver.refresh() | ||||||
|  |     driver.refresh() | ||||||
|  |     find_word = word in driver.page_source | ||||||
|  |     assert find_word is False | ||||||
|  | @ -48,7 +48,7 @@ def unfamiliar(username, word): | ||||||
|     pickle_idea.unfamiliar(user_freq_record, word) |     pickle_idea.unfamiliar(user_freq_record, word) | ||||||
|     session['thisWord'] = word  # 1. put a word into session |     session['thisWord'] = word  # 1. put a word into session | ||||||
|     session['time'] = 1 |     session['time'] = 1 | ||||||
|     return redirect(url_for('user_bp.userpage', username=username)) |     return "success" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @userService.route("/<username>/<word>/familiar", methods=['GET', 'POST']) | @userService.route("/<username>/<word>/familiar", methods=['GET', 'POST']) | ||||||
|  | @ -63,7 +63,7 @@ def familiar(username, word): | ||||||
|     pickle_idea.familiar(user_freq_record, word) |     pickle_idea.familiar(user_freq_record, word) | ||||||
|     session['thisWord'] = word  # 1. put a word into session |     session['thisWord'] = word  # 1. put a word into session | ||||||
|     session['time'] = 1 |     session['time'] = 1 | ||||||
|     return redirect(url_for('user_bp.userpage', username=username)) |     return "success" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @userService.route("/<username>/<word>/del", methods=['GET', 'POST']) | @userService.route("/<username>/<word>/del", methods=['GET', 'POST']) | ||||||
|  | @ -77,7 +77,7 @@ def deleteword(username, word): | ||||||
|     user_freq_record = path_prefix + 'static/frequency/' + 'frequency_%s.pickle' % (username) |     user_freq_record = path_prefix + 'static/frequency/' + 'frequency_%s.pickle' % (username) | ||||||
|     pickle_idea2.deleteRecord(user_freq_record, word) |     pickle_idea2.deleteRecord(user_freq_record, word) | ||||||
|     flash(f'<strong>{word}</strong> is no longer in your word list.') |     flash(f'<strong>{word}</strong> is no longer in your word list.') | ||||||
|     return redirect(url_for('user_bp.userpage', username=username)) |     return "success" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @userService.route("/<username>", methods=['GET', 'POST']) | @userService.route("/<username>", methods=['GET', 'POST']) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue