diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..596df6f --- /dev/null +++ b/Readme.md @@ -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 \ No newline at end of file diff --git a/app/main.py b/app/main.py index f35b65c..6053266 100644 --- a/app/main.py +++ b/app/main.py @@ -274,12 +274,14 @@ def user_mark_word(username): def unfamiliar(username,word): user_freq_record = path_prefix + 'static/frequency/' + 'frequency_%s.pickle' % (username) pickle_idea.unfamiliar(user_freq_record,word) + session['thisWord'] = word # 1. put a word into session return redirect(url_for('userpage', username=username)) @app.route("///familiar", methods=['GET', 'POST']) def familiar(username,word): user_freq_record = path_prefix + 'static/frequency/' + 'frequency_%s.pickle' % (username) pickle_idea.familiar(user_freq_record,word) + session['thisWord'] = word # 1. put a word into session return redirect(url_for('userpage', username=username)) @app.route("///del", methods=['GET', 'POST']) @@ -349,7 +351,13 @@ def userpage(username): document.getElementById("text-content").addEventListener("touchstart", fillinWord, false); ''' - + if session.get('thisWord'): + page += ''' + + ''' + d = load_freq_history(user_freq_record) if len(d) > 0: page += '

我的生词簿

' @@ -360,6 +368,8 @@ def userpage(username): for x in sort_in_descending_order(lst2): word = x[0] freq = x[1] + if session.get('thisWord') == x[0]: + page += '' # 3. anchor if isinstance(d[word], list): # d[word] is a list of dates if freq > 1: page += '

%s(%d) 熟悉 不熟悉 删除

\n' % (youdao_link(word), word, '; '.join(d[word]), freq,username, word,username,word, username,word) diff --git a/app/test/test_page_position.py b/app/test/test_page_position.py new file mode 100644 index 0000000..21a6722 --- /dev/null +++ b/app/test/test_page_position.py @@ -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()