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