forked from mrlan/EnglishPal
				
			Compare commits
	
		
			No commits in common. "Bug555-chenshiying" and "master" have entirely different histories. 
		
	
	
		
			Bug555-che
			...
			master
		
	
		|  | @ -108,7 +108,7 @@ | ||||||
| 
 | 
 | ||||||
|                 <p><b id="question">{{ today_article['question'] }}</b></p><br/> |                 <p><b id="question">{{ today_article['question'] }}</b></p><br/> | ||||||
|                 <script type="text/javascript"> |                 <script type="text/javascript"> | ||||||
|                     function toggle_visibility(id) { |                     function toggle_visibility(id) { {# https://css-tricks.com/snippets/javascript/showhide-element/#} | ||||||
|                         const e = document.getElementById(id); |                         const e = document.getElementById(id); | ||||||
|                         if (e.style.display === 'block') |                         if (e.style.display === 'block') | ||||||
|                             e.style.display = 'none'; |                             e.style.display = 'none'; | ||||||
|  | @ -195,11 +195,55 @@ | ||||||
|     {% endfor %} |     {% endfor %} | ||||||
| {% endif %} | {% endif %} | ||||||
| <script type="text/javascript"> | <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() { |     function clearSelectedWords() { | ||||||
|         localStorage.removeItem('selectedWords'); |         localStorage.removeItem('selectedWords'); | ||||||
|         document.querySelector('#selected-words').value = ''; |         document.querySelector('#selected-words').value = ''; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|     function load_next_article() { |     function load_next_article() { | ||||||
|         $("#load_next_article").prop("disabled", true) |         $("#load_next_article").prop("disabled", true) | ||||||
|         $.ajax({ |         $.ajax({ | ||||||
|  | @ -251,6 +295,7 @@ | ||||||
|         }, 2000); |         }, 2000); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     <!-- 检查是否存在上一篇或下一篇,不存在则对应按钮隐藏--> | ||||||
|     function check_pre(visited_articles) { |     function check_pre(visited_articles) { | ||||||
|         if ((visited_articles == '') || (visited_articles['index'] <= 0)) { |         if ((visited_articles == '') || (visited_articles['index'] <= 0)) { | ||||||
|             $('#load_pre_article').hide(); |             $('#load_pre_article').hide(); | ||||||
|  | @ -276,74 +321,13 @@ | ||||||
|             $('#read_all').show(); |             $('#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> | </script> | ||||||
| </body> | </body> | ||||||
|  | <style> | ||||||
|  |     mark { | ||||||
|  |         color: #{{ yml['highlight']['color'] }}; | ||||||
|  |         background-color: rgba(0, 0, 0, 0); | ||||||
|  |     } | ||||||
|  | </style> | ||||||
|  | 
 | ||||||
| </html> | </html> | ||||||
										
											Binary file not shown.
										
									
								
							|  | @ -9,7 +9,5 @@ def URL(): | ||||||
| 
 | 
 | ||||||
| @pytest.fixture | @pytest.fixture | ||||||
| def driver(): | def driver(): | ||||||
|     my_driver = webdriver.Chrome() |     my_driver = webdriver.Edge()  # uncomment this line if you wish to run the test on your laptop     | ||||||
|     return my_driver |     return my_driver | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|  |  | ||||||
|  | @ -1,43 +0,0 @@ | ||||||
| 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