detail.py 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. import json
  2. import time
  3. from datetime import date
  4. from time import sleep
  5. import requests
  6. from selenium import webdriver
  7. from selenium.common import NoSuchElementException
  8. from selenium.webdriver import ActionChains, Keys
  9. from selenium.webdriver.common.by import By
  10. from selenium.webdriver.support.wait import WebDriverWait
  11. import auth
  12. import main
  13. # webdriver 下载地址:http://chromedriver.storage.googleapis.com/index.html
  14. # 新版的driver 下载地址:https://googlechromelabs.github.io/chrome-for-testing/
  15. # 放置于:把文件存放在python根目录下,例如:C:\xxx\Python\Python38下
  16. def login(browser):
  17. user_name = browser.find_element(By.XPATH, "//*[@id='app']/section/div/div[2]/div[1]/input")
  18. user_name.clear()
  19. user_name.send_keys("kfzs003")
  20. browser.find_element(By.XPATH, "//*[@id='app']/section/div/div[2]/div[2]/input").send_keys("123456")
  21. browser.find_element(By.XPATH, "//*[@id='app']/section/div/div[3]").click()
  22. def get_api_data():
  23. response_yd = requests.get(
  24. "http://10.8.230.200:8888/portal/r/jd?cmd=com.awspaas.user.apps.information_publish.wechat_count")
  25. yd_number = response_yd.text
  26. print("应到:" + yd_number)
  27. response_sd = requests.get(
  28. "http://xjf.lianyou.fun:8093/v1/account/qlsf_sign_in")
  29. sd_number = response_sd.text
  30. print("实到:" + sd_number)
  31. tj_list = [yd_number, sd_number]
  32. return tj_list
  33. def find_highlight(browser):
  34. # 查找class为"custom-item"的节点,并且确保其子结构中没有class为"off-line-mask"的节点
  35. items = browser.find_elements(By.CSS_SELECTOR, ".custom-item:not(:has(.off-line-mask))")
  36. # 打印符合条件的节点数量
  37. print("符合条件的节点数量:", len(items))
  38. # 遍历符合条件的节点并打印相关信息
  39. i = 1
  40. n = 1
  41. for item in items:
  42. if item.find_element(By.CSS_SELECTOR, ".name-block p").text == "酸甜小柠檬":
  43. today = date.today()
  44. # 将日期格式化为字符串
  45. formatted_date = today.strftime("%Y-%m-%d")
  46. item.click()
  47. sleep(1)
  48. browser.find_element(By.XPATH,
  49. "//*[@id='app']/section/section[2]/div[2]/section/section[2]/div[3]/div/img").click()
  50. sleep(1)
  51. browser.find_element(By.XPATH,
  52. "//*[@id='app']/section/section[2]/div[2]/section/section[1]/div/input").send_keys(
  53. "机器人签到")
  54. sleep(1)
  55. ActionChains(browser).key_down(Keys.ENTER).key_up(Keys.ENTER).perform()
  56. sleep(1)
  57. send_message(browser, formatted_date + "签到")
  58. i += 1
  59. break
  60. for item in items:
  61. print("节点信息:")
  62. print("图片URL:", item.find_element(By.CSS_SELECTOR, ".el-badge img").get_attribute("src"))
  63. print("名称:", item.find_element(By.CSS_SELECTOR, ".name-block p").text)
  64. print("ID:", item.find_element(By.CSS_SELECTOR, ".name-block p:nth-child(2)").text)
  65. print("-------------------------")
  66. item.click()
  67. sleep(3)
  68. browser.find_element(By.XPATH,
  69. "//*[@id='app']/section/section[2]/div[2]/section/section[2]/div[3]/div/img").click()
  70. sleep(1)
  71. print("i: " + str(i))
  72. if i == 1:
  73. browser.find_element(By.XPATH,
  74. "//*[@id='app']/section/section[2]/div[2]/section/section[1]/div/input").send_keys(
  75. "机器人签到")
  76. else:
  77. browser.find_element(By.XPATH,
  78. "//*[@id='app']/section/section[2]/div[2]/section/section[1]/div/input").click()
  79. sleep(3)
  80. ActionChains(browser).key_down(Keys.ENTER).key_up(Keys.ENTER).perform()
  81. sleep(1)
  82. n = send_message(browser, n)
  83. i += 1
  84. n += 1
  85. print("n: " + str(n))
  86. tj_list = get_api_data()
  87. yd_number = tj_list[0]
  88. sd_number = tj_list[1]
  89. result = "bpm登记微信" + yd_number + "个,签到" + sd_number + "个。方糖无法加群。"
  90. print(result)
  91. for item in items:
  92. if item.find_element(By.CSS_SELECTOR, ".name-block p").text == "酸甜小柠檬":
  93. item.click()
  94. sleep(1)
  95. browser.find_element(By.XPATH,
  96. "//*[@id='app']/section/section[2]/div[2]/section/section[2]/div[3]/div/img").click()
  97. sleep(1)
  98. browser.find_element(By.XPATH,
  99. "//*[@id='app']/section/section[2]/div[2]/section/section[1]/div/input").click()
  100. sleep(1)
  101. ActionChains(browser).key_down(Keys.ENTER).key_up(Keys.ENTER).perform()
  102. sleep(1)
  103. send_message(browser, result)
  104. break
  105. #
  106. def send_message(browser, n):
  107. try:
  108. browser.find_element(By.XPATH,
  109. "//*[@id='app']/section/section[2]/div[2]/section/div[3]/div[1]/div/div/div[2]/div[1]/div").click()
  110. sleep(1)
  111. browser.find_element(By.XPATH,
  112. "//*[@id='input-text']").send_keys(
  113. n
  114. )
  115. sleep(1)
  116. # ActionChains(browser).key_down(Keys.ENTER).key_up(Keys.ENTER).perform()
  117. sleep(1)
  118. return n
  119. except NoSuchElementException:
  120. if isinstance(n, str):
  121. return n
  122. else:
  123. return n - 1
  124. def send_data(data):
  125. print(data)
  126. headers = {'Content-Type': 'application/json'}
  127. response = requests.post(url=main.URL_SEND_DATA, headers=headers, data=json.dumps(data))
  128. print(response)
  129. return ''
  130. # 发送企业微信消息
  131. def send_wechat_info(message):
  132. print(message)
  133. data = {
  134. "msgtype": "text",
  135. "text": {
  136. "content": message
  137. }
  138. }
  139. headers = {'Content-Type': 'application/json'}
  140. response = requests.post(url=main.URL_SEND_WECHAT_INFO, headers=headers, data=json.dumps(data))
  141. print(response)
  142. return ''
  143. #
  144. if __name__ == "__main__":
  145. print(time.localtime().tm_hour)
  146. # send_wechat_info("测试消息")