forked from mrlan/EnglishPal
				
			Merge branch 'SPM-Spring2021-2597-占健豪201831990539' of https://github.com/lanlab-org/EnglishPal
						commit
						905e85f201
					
				|  | @ -0,0 +1,5 @@ | ||||||
|  | Click the Familiar or Unfamiliar button (current word frequency>1), the current word position is displayed at the top of the page; | ||||||
|  | 
 | ||||||
|  | Click the Familiar or Unfamiliar button (current word frequency is 1), and the page will be displayed as the top of the entire page. | ||||||
|  | 
 | ||||||
|  | Demo video link: https://b23.tv/QuB77m | ||||||
							
								
								
									
										10
									
								
								app/main.py
								
								
								
								
							
							
						
						
									
										10
									
								
								app/main.py
								
								
								
								
							|  | @ -274,12 +274,14 @@ def user_mark_word(username): | ||||||
| def unfamiliar(username,word): | def unfamiliar(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_idea.unfamiliar(user_freq_record,word) |     pickle_idea.unfamiliar(user_freq_record,word) | ||||||
|  |     session['thisWord'] = word  # 1. put a word into session | ||||||
|     return redirect(url_for('userpage', username=username)) |     return redirect(url_for('userpage', username=username)) | ||||||
| 
 | 
 | ||||||
| @app.route("/<username>/<word>/familiar", methods=['GET', 'POST']) | @app.route("/<username>/<word>/familiar", methods=['GET', 'POST']) | ||||||
| def familiar(username,word): | def familiar(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_idea.familiar(user_freq_record,word) |     pickle_idea.familiar(user_freq_record,word) | ||||||
|  |     session['thisWord'] = word  # 1. put a word into session | ||||||
|     return redirect(url_for('userpage', username=username)) |     return redirect(url_for('userpage', username=username)) | ||||||
| 
 | 
 | ||||||
| @app.route("/<username>/<word>/del", methods=['GET', 'POST']) | @app.route("/<username>/<word>/del", methods=['GET', 'POST']) | ||||||
|  | @ -349,6 +351,12 @@ def userpage(username): | ||||||
|                    document.getElementById("text-content").addEventListener("touchstart", fillinWord, false); |                    document.getElementById("text-content").addEventListener("touchstart", fillinWord, false); | ||||||
|                  </script> |                  </script> | ||||||
|                  ''' |                  ''' | ||||||
|  |         if session.get('thisWord'): | ||||||
|  |             page += ''' | ||||||
|  |                    <script type="text/javascript"> | ||||||
|  |                        location.href = "#aaa"  // 2. define a anchor URL and point to the anchor in the page whose id is aaa | ||||||
|  |                    </script>  | ||||||
|  |                    ''' | ||||||
| 
 | 
 | ||||||
|         d = load_freq_history(user_freq_record) |         d = load_freq_history(user_freq_record) | ||||||
|         if len(d) > 0: |         if len(d) > 0: | ||||||
|  | @ -360,6 +368,8 @@ def userpage(username): | ||||||
|             for x in sort_in_descending_order(lst2): |             for x in sort_in_descending_order(lst2): | ||||||
|                 word = x[0] |                 word = x[0] | ||||||
|                 freq = x[1] |                 freq = x[1] | ||||||
|  |                 if session.get('thisWord') == x[0]: | ||||||
|  |                     page += '<a name="aaa"></a>'    # 3. anchor | ||||||
|                 if isinstance(d[word], list): # d[word] is a list of dates |                 if isinstance(d[word], list): # d[word] is a list of dates | ||||||
|                     if freq > 1: |                     if freq > 1: | ||||||
|                         page += '<p class="new-word"> <a href="%s">%s</a>(<a title="%s">%d</a>) <a href="%s/%s/familiar">熟悉</a> <a href="%s/%s/unfamiliar">不熟悉</a>  <a href="%s/%s/del">删除</a> </p>\n' % (youdao_link(word), word, '; '.join(d[word]), freq,username, word,username,word, username,word) |                         page += '<p class="new-word"> <a href="%s">%s</a>(<a title="%s">%d</a>) <a href="%s/%s/familiar">熟悉</a> <a href="%s/%s/unfamiliar">不熟悉</a>  <a href="%s/%s/del">删除</a> </p>\n' % (youdao_link(word), word, '; '.join(d[word]), freq,username, word,username,word, username,word) | ||||||
|  |  | ||||||
|  | @ -0,0 +1,59 @@ | ||||||
|  | """ | ||||||
|  | Click the Familiar or Unfamiliar button. Specifically, we plan to make the following improvements: | ||||||
|  | Click the Familiar or Unfamiliar button (current word frequency>1), the current word position is displayed at the top of the page; | ||||||
|  | Click the Familiar or Unfamiliar button (current word frequency is 1), and the page will be displayed as the top of the entire page. | ||||||
|  | """ | ||||||
|  | from random import randint | ||||||
|  | 
 | ||||||
|  | from selenium import webdriver | ||||||
|  | from selenium.common.exceptions import NoSuchElementException | ||||||
|  | from selenium.webdriver.common.desired_capabilities import DesiredCapabilities | ||||||
|  | 
 | ||||||
|  | driver = webdriver.Remote('http://localhost:4444/wd/hub', DesiredCapabilities.CHROME) | ||||||
|  | driver.implicitly_wait(10) | ||||||
|  | 
 | ||||||
|  | HOME_PAGE = 'http://121.4.94.30:91/' | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def click_by_random(text): | ||||||
|  |     elements = driver.find_elements_by_link_text(text)  # 点击单词表中的第一个单词的熟悉按钮 | ||||||
|  |     elements[randint(0, len(elements) - 1)].click() | ||||||
|  |     try: | ||||||
|  |         location = driver.find_element_by_xpath('//a[@name="aaa"]').location  # 点击后单词次数≥1 | ||||||
|  |         roll_height = get_scrollTop()  # 获取滚动条的位置 | ||||||
|  |         assert int(location['y'] - roll_height) == 0  # 差值小于1 | ||||||
|  |     except NoSuchElementException:  # 点击后单词消失,scrollTop=0,页面回到最上面 | ||||||
|  |         roll_height = get_scrollTop() | ||||||
|  |         assert roll_height == 0 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def get_scrollTop(): | ||||||
|  |     js = 'var h = document.body.scrollTop;' + 'return h' | ||||||
|  |     roll_height = driver.execute_script(js) | ||||||
|  |     return roll_height | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def test_page_position(): | ||||||
|  |     try: | ||||||
|  |         driver.get(HOME_PAGE) | ||||||
|  |         # login | ||||||
|  |         driver.find_element_by_link_text('登录').click() | ||||||
|  | 
 | ||||||
|  |         uname = 'lanhui' | ||||||
|  |         password = 'l0ve1t' | ||||||
|  |         driver.find_element_by_name('username').send_keys(uname) | ||||||
|  |         driver.find_element_by_name('password').send_keys(password) | ||||||
|  | 
 | ||||||
|  |         driver.find_element_by_xpath('//form[1]/p[3]/input[1]').click()  # 找到登录按钮 | ||||||
|  | 
 | ||||||
|  |         # 这里随机测试三个单词,点击熟悉 | ||||||
|  |         click_by_random('熟悉') | ||||||
|  |         click_by_random('熟悉') | ||||||
|  |         click_by_random('熟悉') | ||||||
|  |         # 这里随机测试三个单词,点击不熟悉 | ||||||
|  |         click_by_random('不熟悉') | ||||||
|  |         click_by_random('不熟悉') | ||||||
|  |         click_by_random('不熟悉') | ||||||
|  | 
 | ||||||
|  |     finally: | ||||||
|  |         driver.quit() | ||||||
		Loading…
	
		Reference in New Issue