forked from mrlan/EnglishPal
				
			参考了一下tangxinyuan小组的写法,将选取单词的方法由模拟鼠标选取单词改为根据id获取文章,随机从文章中挑选一个单词放入生词框中,这样是一定可以选取到文章中的单词。
然后根据span标签定位到选择的生词,双击再次选择,从而在生词框中删除该单词Bug545-HuangHuiLing
							parent
							
								
									4a42c5c22c
								
							
						
					
					
						commit
						a0c9b82ee7
					
				|  | @ -8,33 +8,24 @@ from selenium.webdriver.common.action_chains import ActionChains | ||||||
| 
 | 
 | ||||||
| from helper import signup | from helper import signup | ||||||
| 
 | 
 | ||||||
|  | def has_punctuation(s): | ||||||
|  |     return any(c in string.punctuation for c in s) | ||||||
| 
 | 
 | ||||||
| def select_one(driver): | def select_one(driver): | ||||||
|     question = driver.find_element(By.ID, 'question') |     elem = driver.find_element(By.ID, 'article') | ||||||
|     # 创建ActionChains对象 |     essay_content = elem.text | ||||||
|     actions = ActionChains(driver) |     valid_word = random.choice([word for word in essay_content.split() if len(word) >= 6 and not has_punctuation( | ||||||
| 
 |         word) and 'font>' not in word and 'br>' not in word and 'p>' not in word]) | ||||||
|     # 模拟鼠标移动到文本元素上 |     driver.find_element(By.ID, 'selected-words').send_keys(valid_word) | ||||||
|     actions.move_to_element(question) |     driver.find_element(By.ID, 'article').click() | ||||||
| 
 |     return valid_word | ||||||
|     # 模拟鼠标按下并拖动以选择文本 |  | ||||||
|     actions.double_click() |  | ||||||
|     actions.perform() |  | ||||||
| 
 |  | ||||||
|     # 获取选中的文本 |  | ||||||
|     return driver.find_element(By.ID, 'selected-words').get_attribute('value') |  | ||||||
| 
 | 
 | ||||||
| def select_two(driver): | def select_two(driver): | ||||||
|     question = driver.find_element(By.ID, 'question') |     word = driver.find_element(By.CLASS_NAME, 'highlighted') | ||||||
|     article = driver.find_element(By.ID, 'article_title') |  | ||||||
| 
 | 
 | ||||||
|     # 创建ActionChains对象 |     # 创建ActionChains对象 | ||||||
|     actions = ActionChains(driver) |     actions = ActionChains(driver) | ||||||
|     actions.move_to_element(article) |     actions.move_to_element(word) | ||||||
|     actions.click() |  | ||||||
|     time.sleep(1) |  | ||||||
| # 模拟鼠标移动到文本元素上 |  | ||||||
|     actions.move_to_element(question) |  | ||||||
| 
 | 
 | ||||||
|     # 模拟鼠标按下并拖动以选择文本 |     # 模拟鼠标按下并拖动以选择文本 | ||||||
|     actions.double_click() |     actions.double_click() | ||||||
|  | @ -45,12 +36,6 @@ def test_selected_second_word(driver, URL): | ||||||
|     try: |     try: | ||||||
|         signup(URL, driver) |         signup(URL, driver) | ||||||
|         selected_words = select_one(driver); |         selected_words = select_one(driver); | ||||||
|         while selected_words.strip() == "": |  | ||||||
|             load_next_article = driver.find_element(By.ID, "load_next_article") |  | ||||||
|             action_chains = ActionChains(driver) |  | ||||||
|             action_chains.click(load_next_article).perform() |  | ||||||
|             time.sleep(1) |  | ||||||
|             selected_words = select_one(driver) |  | ||||||
|         assert selected_words.strip() != "", "选中的单词被放置框中" |         assert selected_words.strip() != "", "选中的单词被放置框中" | ||||||
|         select_two(driver) |         select_two(driver) | ||||||
|         selected_second_words = driver.find_element(By.ID, 'selected-words').get_attribute('value') |         selected_second_words = driver.find_element(By.ID, 'selected-words').get_attribute('value') | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue