Compare commits
	
		
			8 Commits 
		
	
	
		
			master
			...
			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 class="btn btn-success" onclick="familiar({{ loop.index0 }})" role="button">熟悉</a>
 | 
				
			||||||
                    <a title="{{ word }}">{{ freq }}</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>
 | 
				
			||||||
                    <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>
 | 
					 | 
				
			||||||
            {% 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