Compare commits
12 Commits
master
...
Bug555-che
Author | SHA1 | Date |
---|---|---|
陳詩穎 | 6733ed9f86 | |
陳詩穎 | a49019eb78 | |
陳詩穎 | 3bde0b0156 | |
陳詩穎 | b518dab6c9 | |
陳詩穎 | 7b74a970c7 | |
陳詩穎 | 7fbccd554a | |
陳詩穎 | a56c16cc6b | |
陳詩穎 | 29627ec87a | |
陳詩穎 | aa8d8b75e0 | |
陳詩穎 | bb838ad51a | |
陳詩穎 | d414eaa144 | |
陳詩穎 | 4b185df84f |
|
@ -108,7 +108,7 @@
|
|||
|
||||
<p><b id="question">{{ today_article['question'] }}</b></p><br/>
|
||||
<script type="text/javascript">
|
||||
function toggle_visibility(id) { {# https://css-tricks.com/snippets/javascript/showhide-element/#}
|
||||
function toggle_visibility(id) {
|
||||
const e = document.getElementById(id);
|
||||
if (e.style.display === 'block')
|
||||
e.style.display = 'none';
|
||||
|
@ -195,55 +195,11 @@
|
|||
{% endfor %}
|
||||
{% endif %}
|
||||
<script type="text/javascript">
|
||||
window.onload = function () { // 页面加载时执行
|
||||
const settings = {
|
||||
// initialize settings from localStorage
|
||||
highlightChecked: localStorage.getItem('highlightChecked') !== 'false', // localStorage stores strings, default to true. same below
|
||||
readChecked: localStorage.getItem('readChecked') !== 'false',
|
||||
chooseChecked: localStorage.getItem('chooseChecked') !== 'false',
|
||||
rangeValue: localStorage.getItem('rangeValue') || '1',
|
||||
selectedWords: localStorage.getItem('selectedWords') || ''
|
||||
};
|
||||
|
||||
const elements = {
|
||||
highlightCheckbox: document.querySelector('#highlightCheckbox'),
|
||||
readCheckbox: document.querySelector('#readCheckbox'),
|
||||
chooseCheckbox: document.querySelector('#chooseCheckbox'),
|
||||
rangeComponent: document.querySelector('#rangeComponent'),
|
||||
rangeValueDisplay: document.querySelector('#rangeValue'),
|
||||
selectedWordsInput: document.querySelector('#selected-words')
|
||||
};
|
||||
// 应用设置到页面元素
|
||||
elements.highlightCheckbox.checked = settings.highlightChecked;
|
||||
elements.readCheckbox.checked = settings.readChecked;
|
||||
elements.chooseCheckbox.checked = settings.chooseChecked;
|
||||
elements.rangeComponent.value = settings.rangeValue;
|
||||
elements.rangeValueDisplay.textContent = `${settings.rangeValue}x`;
|
||||
elements.selectedWordsInput.value = settings.selectedWords;
|
||||
|
||||
// 刷新页面或进入页面时判断,若不是首篇文章,则上一篇按钮可见
|
||||
if (sessionStorage.getItem('pre_page_button') !== 'display' && sessionStorage.getItem('pre_page_button')) {
|
||||
$('#load_pre_article').show();
|
||||
}
|
||||
|
||||
// 事件监听器
|
||||
elements.selectedWordsInput.addEventListener('input', () => {
|
||||
localStorage.setItem('selectedWords', elements.selectedWordsInput.value);
|
||||
});
|
||||
|
||||
elements.rangeComponent.addEventListener('input', () => {
|
||||
const rangeValue = elements.rangeComponent.value;
|
||||
elements.rangeValueDisplay.textContent = `${rangeValue}x`;
|
||||
localStorage.setItem('rangeValue', rangeValue);
|
||||
});
|
||||
};
|
||||
|
||||
function clearSelectedWords() {
|
||||
localStorage.removeItem('selectedWords');
|
||||
document.querySelector('#selected-words').value = '';
|
||||
}
|
||||
|
||||
|
||||
function load_next_article() {
|
||||
$("#load_next_article").prop("disabled", true)
|
||||
$.ajax({
|
||||
|
@ -295,7 +251,6 @@
|
|||
}, 2000);
|
||||
}
|
||||
|
||||
<!-- 检查是否存在上一篇或下一篇,不存在则对应按钮隐藏-->
|
||||
function check_pre(visited_articles) {
|
||||
if ((visited_articles == '') || (visited_articles['index'] <= 0)) {
|
||||
$('#load_pre_article').hide();
|
||||
|
@ -321,13 +276,74 @@
|
|||
$('#read_all').show();
|
||||
}
|
||||
}
|
||||
|
||||
function longPolling() {
|
||||
$.ajax({
|
||||
url: '/get_next_article/{{username}}', // 这里的URL根据需要更改
|
||||
dataType: 'json',
|
||||
success: function(data) {
|
||||
if (data['today_article']) {
|
||||
update(data['today_article']);
|
||||
check_pre(data['visited_articles']);
|
||||
check_next(data['result_of_generate_article']);
|
||||
toggleHighlighting();
|
||||
}
|
||||
// 发起下一次Long Polling请求
|
||||
longPolling();
|
||||
},
|
||||
error: function() {
|
||||
// 处理错误情况
|
||||
// 发起下一次Long Polling请求
|
||||
longPolling();
|
||||
},
|
||||
timeout: 30000 // 设置超时时间,单位为毫秒
|
||||
});
|
||||
}
|
||||
|
||||
window.onload = function () { // 页面加载时执行
|
||||
longPolling();
|
||||
|
||||
const settings = {
|
||||
// initialize settings from localStorage
|
||||
highlightChecked: localStorage.getItem('highlightChecked') !== 'false', // localStorage stores strings, default to true. same below
|
||||
readChecked: localStorage.getItem('readChecked') !== 'false',
|
||||
chooseChecked: localStorage.getItem('chooseChecked') !== 'false',
|
||||
rangeValue: localStorage.getItem('rangeValue') || '1',
|
||||
selectedWords: localStorage.getItem('selectedWords') || ''
|
||||
};
|
||||
|
||||
const elements = {
|
||||
highlightCheckbox: document.querySelector('#highlightCheckbox'),
|
||||
readCheckbox: document.querySelector('#readCheckbox'),
|
||||
chooseCheckbox: document.querySelector('#chooseCheckbox'),
|
||||
rangeComponent: document.querySelector('#rangeComponent'),
|
||||
rangeValueDisplay: document.querySelector('#rangeValue'),
|
||||
selectedWordsInput: document.querySelector('#selected-words')
|
||||
};
|
||||
// 应用设置到页面元素
|
||||
elements.highlightCheckbox.checked = settings.highlightChecked;
|
||||
elements.readCheckbox.checked = settings.readChecked;
|
||||
elements.chooseCheckbox.checked = settings.chooseChecked;
|
||||
elements.rangeComponent.value = settings.rangeValue;
|
||||
elements.rangeValueDisplay.textContent = `${settings.rangeValue}x`;
|
||||
elements.selectedWordsInput.value = settings.selectedWords;
|
||||
|
||||
// 刷新页面或进入页面时判断,若不是首篇文章,则上一篇按钮可见
|
||||
if (sessionStorage.getItem('pre_page_button') !== 'display' && sessionStorage.getItem('pre_page_button')) {
|
||||
$('#load_pre_article').show();
|
||||
}
|
||||
|
||||
// 事件监听器
|
||||
elements.selectedWordsInput.addEventListener('input', () => {
|
||||
localStorage.setItem('selectedWords', elements.selectedWordsInput.value);
|
||||
});
|
||||
|
||||
elements.rangeComponent.addEventListener('input', () => {
|
||||
const rangeValue = elements.rangeComponent.value;
|
||||
elements.rangeValueDisplay.textContent = `${rangeValue}x`;
|
||||
localStorage.setItem('rangeValue', rangeValue);
|
||||
});
|
||||
};
|
||||
</script>
|
||||
</body>
|
||||
<style>
|
||||
mark {
|
||||
color: #{{ yml['highlight']['color'] }};
|
||||
background-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
</style>
|
||||
|
||||
</html>
|
Binary file not shown.
|
@ -9,5 +9,7 @@ def URL():
|
|||
|
||||
@pytest.fixture
|
||||
def driver():
|
||||
my_driver = webdriver.Edge() # uncomment this line if you wish to run the test on your laptop
|
||||
my_driver = webdriver.Chrome()
|
||||
return my_driver
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
import time
|
||||
import pytest
|
||||
import uuid
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver import ActionChains
|
||||
from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
from selenium.webdriver.support import expected_conditions as EC
|
||||
from selenium.common.exceptions import UnexpectedAlertPresentException, NoAlertPresentException, NoSuchElementException, \
|
||||
TimeoutException
|
||||
from conftest import URL
|
||||
driver = webdriver.Chrome()
|
||||
def test_bug555():
|
||||
try:
|
||||
driver.maximize_window()
|
||||
base_url = "http://127.0.0.1:5000"
|
||||
driver.get(base_url)
|
||||
article = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, 'article')))
|
||||
perform_actions_on_article(driver, article)
|
||||
|
||||
next_button = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, 'load_next_article')))
|
||||
next_button.click()
|
||||
print("Clicked next article button.")
|
||||
|
||||
prev_button = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, 'load_pre_article')))
|
||||
prev_button.click()
|
||||
print("Clicked previous article button.")
|
||||
|
||||
except (TimeoutException, NoSuchElementException) as e:
|
||||
print(f"An error occurred: {e}")
|
||||
|
||||
finally:
|
||||
driver.quit()
|
||||
print("Driver closed.")
|
||||
|
||||
def perform_actions_on_article(driver, article):
|
||||
actions = ActionChains(driver)
|
||||
actions.move_to_element(article)
|
||||
actions.click_and_hold()
|
||||
actions.move_by_offset(450, 200)
|
||||
actions.release()
|
||||
actions.perform()
|
||||
print("Performed actions on article.")
|
Loading…
Reference in New Issue