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> | ||||
| </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