python学法用法 自动刷分器_Python selenium模拟手动操作实现无人值守刷积分功能...
def DaTi(): driver.get(url = 'https://pc.xuexi.cn/points/exam-practice.html') elem_juje = WebDriverWait(driver,100).until(EC.presence_of_element_located((By.XPATH,'//div[@class="q-header"]'))) juje = elem_juje.get_attribute('innerText') # 在每日答題中,有三類題,判斷題、選擇題、填空題,所以先獲取題的類別 # 注意 特別需要注意的是 By.XPATH 和 xpath 文本獲取稍有卻別,By.XPATH 獲取文本方式為.get_attribute('innerText') time.sleep(1) # 等待一秒,其實(shí)也無所謂,但是為防止過快操作造成電腦卡頓,還是等待一秒。 if '選' in juje: elem_tishi = WebDriverWait(driver, 100).until(EC.presence_of_element_located((By.XPATH, '//span[@class="tips"]'))) elem_tishi.click() # 在答題中,答案在查看提示中以紅色標(biāo)記,所以首先要模擬點(diǎn)擊查看答案,使答案加載 time.sleep(0.5) elem_answer = WebDriverWait(driver, 100).until(EC.presence_of_all_elements_located((By.XPATH, '//div[@class="line-feed"]/font'))) # 提取紅色標(biāo)記的文字,即答案 time.sleep(0.5) # 同樣沒什么實(shí)際意義 ans_lis = [] for elem in elem_answer: ans_lis.append(elem.get_attribute('innerText')) # 因?yàn)檫x擇題嘛,不一定就是單選題,所以要存放這些答案,以便于在選項(xiàng)中找答案 print('得到答案') time.sleep(0.5) # 同樣沒什么實(shí)際意義 elem_juje.click() # 再次模擬點(diǎn)擊的原因是 此時(shí) 查看提示 框還處于打開狀態(tài),如果不關(guān)閉,會(huì)影響提交答案的操作 # 模擬點(diǎn)擊網(wǎng)頁,關(guān)閉 查看提示 框 time.sleep(0.5) elem_xuanxiang = WebDriverWait(driver, 100).until(EC.presence_of_all_elements_located((By.XPATH, '//div[@class="question"]/div[@class="q-answers"]/div[contains(@class,"q-answer")]'))) # 獲取所有的選項(xiàng)節(jié)點(diǎn) for elem in elem_xuanxiang: data = elem.get_attribute('innerText')[3:].replace('-','') print(data) for i in ans_lis: if i in data: elem.click() ans_lis.remove(i) # 根據(jù)依次A -- > D 遍歷答案,將兩者對(duì)照進(jìn)行選擇與否,所以滿足要求后去除該答案 # 防止對(duì)選項(xiàng)多次點(diǎn)擊造成取消選擇或其他錯(cuò)誤 time.sleep(0.5) #防止過快操作,每次選擇后等待0.5秒 break elem_next = WebDriverWait(driver, 100).until(EC.presence_of_element_located((By.XPATH,'//div[@class="action-row"]/button'))) elem_next.click() # 模擬點(diǎn)擊確定按鈕跳轉(zhuǎn)下一題 DaTi(driver) elif '填' in juje: elem_tishi = WebDriverWait(driver,100).until(EC.presence_of_element_located((By.XPATH,'//span[@class="tips"]'))) elem_tishi.click() time.sleep(0.5) elem_answer = WebDriverWait(driver,100).until(EC.presence_of_element_located((By.XPATH,'//div[@class="line-feed"]'))) time.sleep(0.5) if '請(qǐng)觀看視頻' in elem_answer.get_attribute('innerText'): input('手動(dòng)選擇答案后無需點(diǎn)擊確定,在此輸入回車?yán)^續(xù)') elem_next = WebDriverWait(driver, 100).until(EC.presence_of_element_located((By.XPATH, '//div[@class="action-row"]/button'))) elem_next.click() # 在填空題中會(huì)有觀看視頻的題目,而且查看提示中會(huì)寫‘請(qǐng)觀看視頻'而不會(huì)直接給出答案,所以要人工選擇 elem_answer = WebDriverWait(driver,100).until(EC.presence_of_all_elements_located((By.XPATH,'//div[@class="line-feed"]/font'))) answer = [] time.sleep(0.5) for elem in elem_answer: answer.append(elem.get_attribute('innerText')) # 同樣填空題中也有多個(gè)空的情況,所以將答案放在列表里 time.sleep(1) elem_data = WebDriverWait(driver,100).until(EC.presence_of_all_elements_located((By.XPATH,'//input[@class="blank"]'))) # 找到每個(gè)空 for i in range(len(answer)): elem_data[i].send_keys(answer[i]) time.sleep(0.5) # 通過遍歷空,將對(duì)應(yīng)的答案寫入 elem_data[0].click() time.sleep(1) # 模擬點(diǎn)擊網(wǎng)頁,因?yàn)樵趯懲昕蘸?#xff0c;不點(diǎn)擊網(wǎng)頁會(huì)有確定按鈕為不可點(diǎn)的情況 elem_next = WebDriverWait(driver,100).until(EC.presence_of_element_located((By.XPATH,'//div[@class="action-row"]/button'))) elem_next.click() DaTi(driver) elif '判' in juje:# 同上,判斷題不會(huì)直接給出答案,所以只能手動(dòng)吧 input('手動(dòng)選擇答案后無需點(diǎn)擊確定,在此輸入回車?yán)^續(xù)') elem_next = WebDriverWait(driver, 100).until(EC.presence_of_element_located((By.XPATH, '//div[@class="action-row"]/button'))) elem_next.click() DaTi(driver)
總結(jié)
以上是生活随笔為你收集整理的python学法用法 自动刷分器_Python selenium模拟手动操作实现无人值守刷积分功能...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有哪些因素会导致不孕不育
- 下一篇: python sendline_pyth