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: | ||||
|   head: # 在页面加载之前加载 | ||||
|     # - static/js/APlayer.js | ||||
|     # - static/js/Meting.js | ||||
|     - static/js/jquery.js | ||||
|     - static/js/word_operation.js | ||||
|   bottom: # 在页面加载完之后加载 | ||||
|     - static/js/fillword.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> | ||||
| <body> | ||||
| <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="/reset" role="button">重设密码</a> | ||||
|     </p> | ||||
|  | @ -57,37 +57,18 @@ | |||
|         <p><b>我的生词簿</b></p> | ||||
|         {% for x in lst3 %} | ||||
|             {% set word = x[0] %} | ||||
| 
 | ||||
|             {% set freq = x[1] %} | ||||
|             {% if session.get('thisWord') == x[0] and session.get('time') == 1 %} | ||||
|                 <a name="aaa"></a> | ||||
|             {% endif %} | ||||
|             {% if freq > 1 %} | ||||
|                 <p class="new-word"> | ||||
|                     <a class="btn btn-light" href='http://youdao.com/w/eng/{{ word }}/#keyfrom=dict2.index' | ||||
|             <p id='p_{{ loop.index0 }}' class="new-word" > | ||||
|                 <a id="word_{{ loop.index0 }}"  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> | ||||
|                 ( <a id="freq_{{ loop.index0 }}" 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> | ||||
|             </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 %} | ||||
|         <input id="selected-words2" type="hidden" value="{{ words }}"> | ||||
|     {% 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) | ||||
|     session['thisWord'] = word  # 1. put a word into session | ||||
|     session['time'] = 1 | ||||
|     return redirect(url_for('user_bp.userpage', username=username)) | ||||
|     return "success" | ||||
| 
 | ||||
| 
 | ||||
| @userService.route("/<username>/<word>/familiar", methods=['GET', 'POST']) | ||||
|  | @ -63,7 +63,7 @@ def familiar(username, word): | |||
|     pickle_idea.familiar(user_freq_record, word) | ||||
|     session['thisWord'] = word  # 1. put a word into session | ||||
|     session['time'] = 1 | ||||
|     return redirect(url_for('user_bp.userpage', username=username)) | ||||
|     return "success" | ||||
| 
 | ||||
| 
 | ||||
| @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) | ||||
|     pickle_idea2.deleteRecord(user_freq_record, word) | ||||
|     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']) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue