From ecefeb69b8561f05408ec7fb1de8cfc68fd9f110 Mon Sep 17 00:00:00 2001 From: aya <ayayaaya2019@gmail.com> Date: Sun, 16 Jun 2024 17:09:14 +0800 Subject: [PATCH] test script and helper function --- .../conftest.cpython-312-pytest-8.1.1.pyc | Bin 0 -> 886 bytes app/test/__pycache__/helper.cpython-312.pyc | Bin 0 -> 2645 bytes ...test_add_word.cpython-312-pytest-8.1.1.pyc | Bin 0 -> 5747 bytes ...st_bug543_aya.cpython-312-pytest-8.1.1.pyc | Bin 0 -> 6211 bytes ...t_delete_word.cpython-312-pytest-8.1.1.pyc | Bin 0 -> 4663 bytes app/test/conftest.py | 2 +- app/test/helper.py | 48 +++++++++ app/test/test_bug543_aya.py | 93 ++++++++++++++++++ 8 files changed, 142 insertions(+), 1 deletion(-) create mode 100644 app/test/__pycache__/conftest.cpython-312-pytest-8.1.1.pyc create mode 100644 app/test/__pycache__/helper.cpython-312.pyc create mode 100644 app/test/__pycache__/test_add_word.cpython-312-pytest-8.1.1.pyc create mode 100644 app/test/__pycache__/test_bug543_aya.cpython-312-pytest-8.1.1.pyc create mode 100644 app/test/__pycache__/test_delete_word.cpython-312-pytest-8.1.1.pyc create mode 100644 app/test/helper.py create mode 100644 app/test/test_bug543_aya.py diff --git a/app/test/__pycache__/conftest.cpython-312-pytest-8.1.1.pyc b/app/test/__pycache__/conftest.cpython-312-pytest-8.1.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e12907f0ce8793a697747aed637a424cb5c83b64 GIT binary patch literal 886 zcmZ`%PiqrF6rb5mHk-650b3ylL#U^Kq-jBgAX<qP1RH~)mt`SrvXf@R?q->p*sdr< zEcy}h0ra5wQM~x)pez&%dhsBn<kpjKX1i@Y_?CU|_ujnsX5OEV`Fsum{dwp2?_h*} z3MC=s6wF@%m?9h5*hL1GQt{NDf{~Xp(l|cR3=K{cH{<DsE^Vrt^>RiIBccs2CrQtx zojO1tPE}*^KR)RTKKT$=wBI74S;0|uk92M7JRua6OZNzKD6tz>V09hW;SOQF^Q&T{ zf|#d(O%Y^Lnom~-oCo!_we^jg)f#;3_3O1-?LDHJ@DxEOj~aDzhY`w5D}>M74$F*> zZAfpn%Qwt+Yujwm(UA1GdADniU31IdbsaWnS*~dXfyoKuW^d&81*isLr0zU^NVAYS z4L=iXf{qqeX$H_gFBaXGFTM|8ia1OsreQLd!~ins<3484Z!XeGO6<?kGt@>E+^ncn zB#pGjfQ~#8rMB!{BD(2?ow%D!TvVpI^omV%2^6s>><X|6`c)`?E0jMM%3lksUkcaW z+Hd-k2j3T#Kc$vs9hId>?~WapJ3fmRH-oTqrWHFuC|hAM=qh(cewC6v>TnWe&rDG! zvE?9GxOXfXX)%m+MqJ`MV=u0xnyA&Yg{byMo(Gxjcqux)3tK_O0z{d<v(Lwr$VtfZ z<jm#kW$7pSEpG(#B)4f10z^;PCa{@`G5&$j0eYD~M5RO2Ji?jRr5B}R1>>u86)A<8 UKr<aFdTdwlinJdqfaDE-0i(3jD*ylh literal 0 HcmV?d00001 diff --git a/app/test/__pycache__/helper.cpython-312.pyc b/app/test/__pycache__/helper.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5db0a3b974a56b3c10a7dc71580fe703b248c3df GIT binary patch literal 2645 zcmbtWT}&HC5Z=4<nX@_DkdVYSrr<&WLvR8_A)*zDLug0>E()>IP*;}iJHt8WAMKq( z9GNPWqL!*r``AcrC8|~`C`eGXYV+EcQmHRK8Od}@)JXl2@`gelD)Q1@!$FE^Bc+S* z&dz*0vokyQ-Th>-m;oN|&n9CZ7y<Z=Ec8Kd3G1(7;Ugdbfs(-(nQ56y&|@@3WJYEZ zhB3Az8)RdmVyq&;jd7(lE1MGLF*BBpx4>9smhx0QBu@Pv3Ry0Tkuy-bCc?{MNyUo& z;`Ou`RYf5bO(g|Ml~PH?L!<gYQaAWy5vn6lRK%n@a6Kxf2?ibVr}i{pm-OjuRL_FM z#Tfzy|F5?hN*PfqMbu=dL|+<lY}-BVZYl0=;o}v%5dc?3w+f5{o8zW(jPB<KHcioj zVT#F7@yc>s4(PrpU;?T|N8~7hy}OlB+@@=HX0=+E<NI`JXI5);Iet)=c4omC+s;6b zK4r)m;v|_}L(hYHzOy-Zxx>q+&gLq&3Ke^tjm@#~`f_Y;I|~Zn>blDj&xpn86`nHY zjC)34^!hw!1k-keid@D2j__i6hJtxJ0+-|d`v!OQSEau58U58%9#!v(e^jTr92ajb z*G-vnrg(d~UiXPBP3M>xJqj9udRWJ)UR{dOO#m_!xB_k;m;~3ED`1ks$fLR)TkTV3 zwOd~ce9rta`1Gk>xq{hj%KVl&YuTJ9Dcz69>POrqQBebm2sfw>NS?qOrZ;?%XnSW@ z_nQw1hh_-5{Q33lAMe~oTm}P^;e?2|bXZX)Q&2!AUFt$iL`^;<OmbttFWDeMn1T(d zXfy+%DD*aXXusd%M2w<BWXNPB0kPz_6R}EKmQ=*5k}8Xc85dPZNDG^jsw5+NpdTF) zWif%-F{GwK5it~%rRddg1k)zrD`Xlv=f4oTH1PT*#Fk8`HeF)Vs2EDcLi%1g6%At= zM)bKe$b`982wfGk3gTlD7Pmmi+&|<S9S!+?!vm-)Oo%xoDWOewD&96JsnH3148)d< z$QX_i!iFq92qdLKrX31r(@;vPo=U_7E)F51P<kyuo<IrpAqy18B}ElsNS2aUkyS5m zC?<)rfUJ6Hx7G*o3nV7NL}-`Zw(Ta8QPoruHWKHQs8r&)VP|X%_xA?LT`R$G7XJl@ zvki)x5hPIwjy4<*j*bimM_?+B-&R3iM99d&f#kR>DH9`MIT%i-gDUQo;DjirMd(du zkx`MxlbJLm%}6dn`4(UPO|W8feA54g;Y;&p=Fj<ptE1@Z)?D3-{RP*Fd)1oj<)X`{ zxqJmzzh>*dIk;kT-W+^jFu!~L?eo*ht=HBJjjZ!``%5#i*+{|OS+w_P_MTPVTI8EG zzImQr;OF?oiG0h+0)J|qp&jOF%bF3G4i>pujjLVe>K+?`vt{PmEG#&>ijEVS<3wq9 zo5r`zpI#W48(8ekxAztJlX$n&JZ&Yr4;8rvjcb^(FLP}V9Q8%VVa;)P{^CMlF0gpM z;5a#LUEy$q9gMrB=su>ok9~9TyTDh0dlw4s!94fE3im>hYt^{cS?s6_JFayXogJF9 zV?MHwm`mIX6rBCjwiOPCtJAo;Wv+hB$eOBGdB>gR8FztiD)Oacb`{(EG<?SPQ_H+> zrN&vTY0_$%iZyLoP22Rq3Sa%<(0fC-{c9Ykvfr`iZSFkh{_AlCs6M*fIhePddju#` z_0N3O8iVI2kIjHT@CeYXbCt8?s~Tr~Gu?S>%QDxxYI8hUW3gdF>BIN;{ed$_&US(y zSl|A$F0f>0@M6hjJL_eZ+G!$pP(=2Y^qr=`eaup?b<o26XkoGJ;URf9qdEmYOGzn{ z@J@=6&6f8nnRGe@Rc}Vxe6*eaj)CMe1=@+H9aJ=xNTiZpQU5qno_gL~d-&SIN3tb? zC^hIDSjRpAJc55VxK|P>+}~m!?7>SySqk|Y!1bc2UqI!3&~qQ0`W1xkgZ6cUhjPN> G*!njfY)?M` literal 0 HcmV?d00001 diff --git a/app/test/__pycache__/test_add_word.cpython-312-pytest-8.1.1.pyc b/app/test/__pycache__/test_add_word.cpython-312-pytest-8.1.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0ca6104d2ca601c6dc4eaeb7a180d097dcab4843 GIT binary patch literal 5747 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 literal 0 HcmV?d00001 diff --git a/app/test/__pycache__/test_bug543_aya.cpython-312-pytest-8.1.1.pyc b/app/test/__pycache__/test_bug543_aya.cpython-312-pytest-8.1.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9e72876f9bc918b8b07c36f5ea4072177aee4d53 GIT binary patch literal 6211 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 literal 0 HcmV?d00001 diff --git a/app/test/__pycache__/test_delete_word.cpython-312-pytest-8.1.1.pyc b/app/test/__pycache__/test_delete_word.cpython-312-pytest-8.1.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..128a278f8d5c2e78beea590eb4d76f4fde3784b0 GIT binary patch literal 4663 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 literal 0 HcmV?d00001 diff --git a/app/test/conftest.py b/app/test/conftest.py index af17368..86e39f3 100644 --- a/app/test/conftest.py +++ b/app/test/conftest.py @@ -9,5 +9,5 @@ def URL(): @pytest.fixture def driver(): - my_driver = webdriver.Chrome() + my_driver = webdriver.Chrome() or Edge() return my_driver diff --git a/app/test/helper.py b/app/test/helper.py new file mode 100644 index 0000000..a6991d0 --- /dev/null +++ b/app/test/helper.py @@ -0,0 +1,48 @@ +import uuid +from selenium.webdriver.support.ui import WebDriverWait +from selenium.webdriver.support import expected_conditions as EC +from selenium.common.exceptions import UnexpectedAlertPresentException, NoAlertPresentException +from selenium.webdriver.common.by import By + +def signup(URL, driver): + username = 'TestUser' + str(uuid.uuid1()).split('-')[0].title() + password = '[Abc+123]' + + driver.get(URL) + + try: + # Click the register link + register_link = WebDriverWait(driver, 10).until( + EC.element_to_be_clickable((By.LINK_TEXT, '注册')) + ) + register_link.click() + + # Fill the registration form + username_field = WebDriverWait(driver, 10).until( + EC.presence_of_element_located((By.ID, 'username')) + ) + username_field.send_keys(username) + + password_field = driver.find_element(By.ID, 'password') + password_field.send_keys(password) + + confirm_password_field = driver.find_element(By.ID, 'password2') + confirm_password_field.send_keys(password) + + # Click the register button + register_button = driver.find_element(By.CLASS_NAME, 'btn') + register_button.click() + + # Handle possible alert + try: + WebDriverWait(driver, 1).until(EC.alert_is_present()) + alert = driver.switch_to.alert + alert.accept() + except (UnexpectedAlertPresentException, NoAlertPresentException): + pass + + return username, password + + except Exception as e: + print(f"An error occurred: {e}") + return None, None \ No newline at end of file diff --git a/app/test/test_bug543_aya.py b/app/test/test_bug543_aya.py new file mode 100644 index 0000000..82ed698 --- /dev/null +++ b/app/test/test_bug543_aya.py @@ -0,0 +1,93 @@ +import random +import string +import time + +from selenium.webdriver.common.by import By +from selenium.webdriver.support.ui import WebDriverWait +from selenium.webdriver.support import expected_conditions as EC + +from helper import signup + +def has_punctuation(s): + return any(c in string.punctuation for c in s) + +def login(driver, home, uname, password): + driver.get(home) + WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.LINK_TEXT, '登录'))).click() + driver.find_element(By.ID, 'username').send_keys(uname) + driver.find_element(By.ID, 'password').send_keys(password) + driver.find_element(By.XPATH, '//button[text()="登录"]').click() + WebDriverWait(driver, 10).until(EC.title_is(f"EnglishPal Study Room for {uname}")) + + +def select_valid_word(driver): + elem = driver.find_element(By.ID, 'text-content') + essay_content = elem.text + 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) + return valid_word + + +def select_more_words(driver): + elem = driver.find_element(By.ID, 'text-content') + essay_content = elem.text + valid_words = [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] + words_to_send = ', '.join(valid_words[:7]) + driver.find_element(By.ID, 'selected-words').send_keys(words_to_send) + + +def test_get_user_level(driver, URL): + try: + username, password = signup(URL, driver) + time.sleep(5) + + word = select_valid_word(driver) + + # Wait for the button to be clickable + time.sleep(10) + # Add selected word to the list of words + add_words_button = driver.find_element(By.XPATH, '//button[text()="把生词加入我的生词库"]') + add_words_button.click() + # Wait for the page to update + time.sleep(3) + + add_words_button = driver.find_element(By.XPATH, '//button[text()="加入我的生词簿"]') # Replace with actual ID or selector + add_words_button.click() + # Wait for the page to update again + time.sleep(2) + + # Check if the added word appears in the word container + word_container = driver.find_element(By.CLASS_NAME, 'word-container') + words = word_container.find_elements(By.TAG_NAME, 'p') + added_word_exists = any(word.text == word for word in words) + time.sleep(2) + + + #add new words + word = select_more_words(driver) + add_button = driver.find_element(By.XPATH, '//button[text()="把生词加入我的生词库"]') + add_button.click() + + time.sleep(5) + + #add the words to the list of words + add_words_again = driver.find_element(By.XPATH, '//button[text()="加入我的生词簿"]') # Replace with actual ID or selector + add_words_again.click() + # Wait for the page to update again + time.sleep(3) + + + # compare user level + + + # Log out and close the browser + driver.find_element(By.XPATH, '//a[contains(@class, "btn-secondary") and text()="退出"]') + driver.execute_script("window.open('');window.close();") + WebDriverWait(driver, 2) + driver.execute_script("window.open('');") + driver.switch_to.window(driver.window_handles[-1]) + + finally: + driver.quit() \ No newline at end of file