这段代码主要是用selenium模拟在微信支付平台上进行退款操作。代码主要的逻辑是:首先进入查询订单页面,输入退款条件并查询出符合条件的订单;然后逐一点击已退款按钮对订单进行退款,并进行短信验证等操作;最后翻页继续对下一页的订单进行退款,直到全部退款完成。
class Test_click():
def setup(self):
self.driver = webdriver.Chrome('chromedriver.exe')
self.driver.maximize_window()
# 隐式等待10秒
self.driver.implicitly_wait('10')
# def teardown(self):
# self.driver.quit()
def test_fromele(self):
self.driver.get('https://pay.weixin.qq.com/index.php/core/info')
time.sleep(10)
self.driver.find_element(By.XPATH, '//*[@class="selected"]/../li[2]/a').click()
time.sleep(2)
self.driver.find_element(By.NAME, 'begin_time').clear()
self.driver.find_element(By.NAME, 'begin_time').send_keys('2022-07-17 00:00:00')
self.driver.find_element(By.XPATH, '//*[@id="tradeQueryDateBegin"]/i').click()
self.driver.find_element(By.NAME, 'end_time').clear()
self.driver.find_element(By.NAME, 'end_time').send_keys('2022-08-16 23:59:59')
self.driver.find_element(By.XPATH, '//*[@id="tradeQueryDateEnd"]/i').click()
window = self.driver.current_window_handle
self.driver.find_element(By.ID, 'moreSearch').click()
self.driver.find_element(By.NAME, 'min_amount').send_keys(0)
self.driver.find_element(By.NAME, 'max_amount').send_keys(2)
self.driver.find_element(By.XPATH,'//*[@id="batchQuery"]/div[5]/div/div/a[1]').click()
time.sleep(10)
elements = self.driver.find_elements(By.XPATH, '//*[@class="returnBn"]')
print(elements)
for ele in elements:
print(ele)
ele.click()
windowns = self.driver.window_handles
if windowns[1] != window:
self.driver.switch_to.window(windowns[1])
else:
self.driver.switch_to.window(windowns[0])
value = self.driver.find_element(By.XPATH, '//*[@id="app"]/div/div[2]/div[2]/div[1]/div[2]/div/div[3]/div/p/span[1]').text
if float(value.replace(',', '')) < 2:
self.driver.find_element(By.NAME, 'refund_amount').send_keys(value)
self.driver.find_element(By.ID, 'commitRefundApplyBtn').click()
self.driver.find_element(By.XPATH, '//*[@id="sec_verify_dialog"]/div[1]/div/div[1]/div/input').send_keys('123456')
try:
time.sleep(3)
self.driver.find_element(By.ID, 'id_send_sms').click()
time.sleep(15)
except Exception:
time.sleep(5)
else:
self.driver.close()
self.driver.switch_to.window(window)
continue
time.sleep(2)
self.driver.find_element(By.XPATH,'//*[@class="btn btn-primary align-center"]').click()
time.sleep(5)
self.driver.close()
time.sleep(5)
windowns_new = self.driver.window_handles
if len(windowns_new) > 1:
if windowns_new[0] == window:
self.driver.switch_to.window(windowns_new[1])
self.driver.close()
else:
self.driver.switch_to.window(windowns_new[0])
self.driver.close()
self.driver.switch_to.window(window)
else:
self.driver.switch_to.window(window)
try:
elements_new = self.driver.find_element(By.XPATH, '//*[@class="btn page-next"]')
while elements_new:
elements_new.click()
elements = self.driver.find_elements(By.XPATH, '//*[@class="returnBn"]')
print(elements)
for ele in elements:
print(ele)
ele.click()
windowns = self.driver.window_handles
if windowns[1] != window:
self.driver.switch_to.window(windowns[1])
else:
self.driver.switch_to.window(windowns[0])
value = self.driver.find_element(By.XPATH,
'//*[@id="app"]/div/div[2]/div[2]/div[1]/div[2]/div/div[3]/div/p/span[1]').text
if float(value) < 2:
self.driver.find_element(By.NAME, 'refund_amount').send_keys(value)
self.driver.find_element(By.ID, 'commitRefundApplyBtn').click()
self.driver.find_element(By.XPATH,
'//*[@id="sec_verify_dialog"]/div[1]/div/div[1]/div/input').send_keys(
'123456')
try:
time.sleep(3)
self.driver.find_element(By.ID, 'id_send_sms').click()
time.sleep(15)
except Exception:
time.sleep(5)
else:
self.driver.close()
self.driver.switch_to.window(window)
continue
time.sleep(2)
self.driver.find_element(By.XPATH, '//*[@class="btn btn-primary align-center"]').click()
time.sleep(5)
self.driver.close()
time.sleep(5)
windowns_new = self.driver.window_handles
if len(windowns_new) > 1:
if windowns_new[0] == window:
self.driver.switch_to.window(windowns_new[1])
self.driver.close()
else:
self.driver.switch_to.window(windowns_new[0])
self.driver.close()
self.driver.switch_to.window(window)
else:
self.driver.switch_to.window(window)
elements_new = self.driver.find_element(By.XPATH, '//*[@class="btn page-next"]')
except:
print('没有下一页')