cxyu 3 rokov pred
rodič
commit
05ecc6dde0

+ 21 - 20
wechat_action/create_ad_plan.py

@@ -26,8 +26,8 @@ class CreateAdPlan():
     def set_ad_title(self):
         logging.info('开始设置广告标题')
         title_ = self.driver.find_element_by_xpath('//*[@class="input-2lFnByGCRh"]')
-        for i in range(40):
-            title_.send_keys(Keys.BACKSPACE)
+        title_.send_keys(Keys.CONTROL+'a')
+        title_.send_keys(Keys.BACKSPACE)
         title_.click()
         time.sleep(0.1)
         title_.send_keys(self.task['title'])
@@ -68,8 +68,9 @@ class CreateAdPlan():
         WebDriverWait(self.driver, 10).until(
             lambda driver: self.driver.find_element_by_css_selector('#PRODUCTTYPE_WECHAT'))
         # 设置公众号名字
-        for i in range(30):
-            self.driver.find_element_by_xpath('//*[@id="test_plan_name"]/input').send_keys(Keys.BACKSPACE)
+        gzh_title=self.driver.find_element_by_xpath('//*[@id="test_plan_name"]/input')
+        gzh_title.send_keys(Keys.CONTROL+'a')
+
 
         self.driver.find_element_by_xpath('//*[@id="test_plan_name"]/input').send_keys(
             self.task['title'])
@@ -172,10 +173,12 @@ class CreateAdPlan():
             self.driver.find_element_by_class_name('icon-3cAquX1RLZ').click()
             self.driver.find_element_by_xpath('//*[@id="bid_objective_6"]/span[1]').click()
         if self.task['plan_base'][1] == 'pyq':
-            # self.driver.find_element_by_class_name('icon-3cAquX1RLZ').click()
-            citys = self.driver.find_elements_by_class_name('checkbox-1pfRMRqv-R')
-            for _ in citys:
-                ActionChains(self.driver).move_to_element(_).click().perform()
+            try:
+                self.driver.find_element_by_class_name('icon-3cAquX1RLZ').click()
+            except:
+                citys = self.driver.find_elements_by_class_name('checkbox-1pfRMRqv-R')
+                for _ in citys:
+                    ActionChains(self.driver).move_to_element(_).click().perform()
 
     def set_ad_cost(self):
         # 投放计划创建
@@ -188,22 +191,21 @@ class CreateAdPlan():
         time.sleep(random.uniform(0.2, 0.3))
 
         bid_cost = self.driver.find_element_by_xpath('//*[@id="price_input"]')
-        for i in range(10):
-            bid_cost.send_keys(Keys.BACKSPACE)
-        time.sleep(random.uniform(0.2, 0.3))
+
+        bid_cost.send_keys(Keys.CONTROL + 'a')
+        bid_cost.send_keys(Keys.BACKSPACE)
+
+        time.sleep(random.uniform(0.1, 0.15))
         bid_cost.send_keys(self.task['cost']['bid'])
         self.driver.find_element_by_css_selector('#target_next_step').click()
 
     def set_ad_human(self):
-        # TODO:检查人群是否正常
         logging.info('设置人群包')
         self.driver.find_element_by_xpath('//*[@id="test-dmp-container"]/div[2]/span/span[1]').click()
         time.sleep(0.1)
         select_human_element = self.driver.find_element_by_xpath(
             '//*[@id="test-dmp-container"]/div[2]/div[2]/div[1]/div/div[1]/button/span')
         ActionChains(self.driver).move_to_element(select_human_element).click().perform()
-        time.sleep(0.4)
-
         WebDriverWait(self.driver, 100).until(
             lambda x: [_ for _ in self.driver.find_elements_by_xpath('//*[@class="adui-input-base"]') if
                        _.get_attribute("placeholder") == '输入名称搜索人群包'])
@@ -215,15 +217,14 @@ class CreateAdPlan():
         page_num_info = re.findall('\d+', page_text_element.text)
         page_num = int(page_num_info[1].strip())
         for z in range(page_num):
-            for i in self.driver.find_elements_by_xpath(
-                    '//*[@class="adui-table-cell"]'):
-                WebDriverWait(self.driver, 5).until(lambda driver: i.is_displayed() and i.is_enabled())
-
             human_infos = self.driver.find_elements_by_class_name('adui-table-cellInner')
-            for _ in human_infos:
+            WebDriverWait(self.driver, 5).until(
+                lambda driver: human_infos[0].is_displayed() and human_infos[-1].is_enabled())
+            human_infos = self.driver.find_elements_by_class_name('adui-table-cellInner')
+            for i in range(int(len(human_infos) / 3)):
+                _ = human_infos[i*3]
                 if _.text in self.task['human_info_package']['name']:
                     _.click()
-
             new_page_num_info = re.findall('\d+', page_text_element.text)
             page_num_now = int(new_page_num_info[0].strip())
 

+ 3 - 2
wechat_action/create_ad_plan_idea.py

@@ -232,9 +232,10 @@ class IdeaAction:
         time.sleep(random.uniform(0.1, 0.5))
 
         # 朋友圈标题设置
+        pyq_title=self.driver.find_element_by_xpath('//*[@class="input-2lFnByGCRh"]')
+        pyq_title.send_keys(Keys.CONTROL + 'a')
+        pyq_title.send_keys(Keys.BACKSPACE)
 
-        for i in range(40):
-            self.driver.find_element_by_xpath('//*[@class="input-2lFnByGCRh"]').send_keys(Keys.BACKSPACE)
         self.driver.find_element_by_xpath('//*[@class="input-2lFnByGCRh"]').send_keys(
             self.task['idea']['name'])
 

+ 19 - 14
wechat_action/login_ad.py

@@ -40,7 +40,7 @@ class LogIn:
         options.add_experimental_option("prefs", prefs)
 
         driver = webdriver.Remote(
-            # command_executor='http://192.168.1.100/wd/hub',
+            # command_executor='http://192.168.20.105/wd/hub',
             command_executor='http://118.31.53.105:4555/wd/hub',
             options=options)
         # driver = webdriver.Chrome(options=options)
@@ -126,19 +126,24 @@ class LogIn:
             var e_one=document.getElementsByClassName('Table_new__wrapper-1cpZN')[0];
             e_one.scroll(10000,100000);
             ''')
-        time.sleep(0.1)
-        # TODO:去除掉time.sleep
-        time.sleep(5)
-        WebDriverWait(self.driver, 100).until(
-            lambda driver: len([self.driver.find_elements_by_link_text('广告投放')]) == 1)
-        WebDriverWait(self.driver, 100).until(
-            lambda driver: len([_ for _ in self.driver.find_elements_by_link_text('广告投放') if
-                                _.is_enabled() and _.is_displayed()]) == 1)
-        elements = self.driver.find_elements_by_link_text('广告投放')
-        elements[0].click()
-        WebDriverWait(self.driver, 100).until(lambda driver: len(self.driver.window_handles) > 1)
-        logging.info('切换服务商成功')
-        self.cookies_save(self, sql_session)
+        for i in range(10):
+            try:
+                WebDriverWait(self.driver, 100).until(
+                    lambda driver: len([self.driver.find_elements_by_link_text('广告投放')]) == 1)
+                WebDriverWait(self.driver, 100).until(
+                    lambda driver: len([_ for _ in self.driver.find_elements_by_link_text('广告投放') if
+                                        _.is_enabled() and _.is_displayed()]) == 1)
+
+                elements = self.driver.find_elements_by_link_text('广告投放')
+                elements[0].click()
+                WebDriverWait(self.driver, 100).until(lambda driver: len(self.driver.window_handles) > 1)
+                logging.info('切换服务商成功')
+                self.cookies_save(self, sql_session)
+                break
+            except Exception as e:
+                pass
+            if i == 10:
+                raise ValueError('切换服务商出错')
 
     @staticmethod
     def get_cookie(driver, login_cookie=True):