From 21aec2027395fbdc409e16a2d26fec4f67a8bab3 Mon Sep 17 00:00:00 2001 From: jinye_huang Date: Mon, 2 Jun 2025 17:49:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=81=E8=A3=85=E4=BA=86=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- douyin_publisher.py | 84 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/douyin_publisher.py b/douyin_publisher.py index 872f98b..57ae016 100644 --- a/douyin_publisher.py +++ b/douyin_publisher.py @@ -179,6 +179,90 @@ class DouyinPublisher(): return True + # 新增方法:封装团购选择流程 + def select_group_buy(self, product_name, product_info): + try: + # 下拉框选择 + tab_selector = self.driver.find_element(By.XPATH, "//div[@class='semi-select select-lJTtRL semi-select-single']") + self.driver.execute_script("arguments[0].click();", tab_selector) + time.sleep(2) + + # 选择团购 + tab_selector_option = self.driver.find_element(By.XPATH, "//div[@data-code='13010' and @class='select-dropdown-option-video']") + self.driver.execute_script("arguments[0].click();", tab_selector_option) + time.sleep(2) + + # 点击产品选择下拉框 + product_selector = self.driver.find_element(By.XPATH, "//div[@class='semi-select select-Qm4u8S semi-select-single semi-select-filterable']") + self.driver.execute_script("arguments[0].click();", product_selector) + time.sleep(2) + + # 输入产品名称 + product_input = self.driver.find_element(By.XPATH, "//input[@class='semi-input semi-input-default' and @placeholder='']") + product_input.send_keys(product_name) + time.sleep(5) + + # 选择产品 + max_retries = 10 + for attempt in range(max_retries): + clicked = self.driver.execute_script(""" + let elements = document.querySelectorAll('.semi-select-option'); + for (let el of elements) { + if (el.textContent.includes(arguments[0])) { + el.click(); + return true; + } + } + return false; + """, product_name) + + if clicked: + print(f"成功点击产品选项,尝试次数: {attempt+1}") + break + else: + print(f"等待产品选项出现,尝试次数: {attempt+1}/{max_retries}") + time.sleep(1) + + time.sleep(2) + + # 输入产品信息 + product_info_input = self.driver.find_element(By.XPATH, "//input[@class='semi-input semi-input-default' and @placeholder='如:海底捞超值双人套餐']") + product_info_input.send_keys(product_info) + time.sleep(2) + + # 点击确认按钮 + confirm_button = self.driver.find_element(By.XPATH, "//div[@class='footer-button-DL8zDh']") + self.driver.execute_script("arguments[0].click();", confirm_button) + time.sleep(2) + + return True + except Exception as e: + print(f"选择团购失败: {e}") + return False + + # 新增方法:设置定时发布 + def set_schedule_time(self, time_str): + try: + # 选择定时发布 + schedule_label = self.driver.find_element(By.XPATH, "//label[contains(@class, 'radio-d4zkru')]//span[contains(text(), '定时发布')]/ancestor::label") + self.driver.execute_script("arguments[0].click();", schedule_label) + time.sleep(2) + + # 输入时间 + time_inputor = self.driver.find_element(By.XPATH, "//input[@class='semi-input semi-input-default' and @type='text' and @placeholder='日期和时间']") + time_inputor.send_keys(time_str) + time.sleep(2) + + return True + except Exception as e: + print(f"设置定时发布失败: {e}") + return False + + # 新增方法:最后确认接口 + def final_confirmation(self, prompt="按任意键继续..."): + input(prompt) + return True + if __name__ == "__main__": # 使用Safari浏览器 driver = webdriver.Safari()