Ejemplo n.º 1
0
    def Openbrower(self, type='Chrome'):
        if type == 'Chrome' or type == '':
            # 创建一个ChromeOptions对象
            option = webdriver.ChromeOptions()
            # 去掉浏览器提示条的提示
            option.add_argument('disbale-infobars')

            try:
                # 异常处理,如果获取到,使用获取到的路径
                userdir = os.environ['USERPROFILE']
                logger.info(userdir)
            except Exception as e:
                userdir = 'C:\\Users\\Xy'
                # 如果没有获取到,则使用默认的文件路径
                logger.exception(e)
            userdir += '\\AppData\\Local\\Google\\Chrome\\User Data'
            userdir = '--user-data-dir=' + userdir
            # 添加用户目录
            option.add_argument(userdir)
            #调用浏览器
            self.driver = webdriver.Chrome(
                executable_path="./Web/lib/chromedriver.exe",
                chrome_options=option)
            self.driver.implicitly_wait(3)
            # self.driver.find_element_by_xpath().text
        if type == 'Ie':
            self.driver = webdriver.Ie(
                executable_path='./Web/lib/IEDriverServer.exe',
                desired_capabilities=None)
        if type == 'gc':
            self.driver = webdriver.Firefox(
                executable_path="./Web/lib/geckodriver.exe")
Ejemplo n.º 2
0
 def sleep(self, s):
     try:
         time.sleep(int(s))
         self.writer.write(self.writer.row, 7, 'PASS')
     except Exception as e:
         logger.exception(e)
         self.writer.write(self.writer.row, 8, str(traceback.format_exc()))
Ejemplo n.º 3
0
    def __find_element(self, locator="None"):
        """
        兼容3中查找方式:id、xpath、accessibility
        格式如下:id :com.das.face:id/etIp4
                xpath://*[@text="设备名称"]/../*[3]
                accessibility: 部分APP软件会使用该定位
        :param locator:
        :return:
        """
        element = None
        try:
            if not locator == 'None':
                if locator.find(':id/') > 0:
                    element = self.driver.find_element_by_id(locator)
                elif locator.startswith('//'):
                    element = self.driver.find_element_by_xpath(locator)
                else:
                    element = self.driver.find_element_by_accessibility_id(locator)
                self.__write_excel(True)
            # else:
            #     self.__write_excel(False, '定位表达式为空')
        except Exception as e:
            element = None
            logger.exception(e.__str__())
            self.__write_excel(False, dsc='未定位到元素,请检查定位表达式是否正确;错误信息:{}'.format(e.__str__()))

        logger.info('locator = {},element = {}'.format(locator, element))

        return element
Ejemplo n.º 4
0
 def select(self, sql):
     try:
         self._cursor.execute(sql)
         result = self._cursor.fetchall()
         return result
     except ProgrammingError as e:
         logger.exception(e)
Ejemplo n.º 5
0
async def week_stats_from_players(week_players, all_server_stats):
    try:
        for player in week_players:
            p_name = player['player']
            # build init player dict if not there
            if not p_name in all_server_stats:
                all_server_stats[p_name] = {
                    'name': util.name_to_discord(p_name),
                    'xp_all': 0,
                    'rank_weight': 0,
                    'rank_1': 0,
                    'rank_2': 0,
                    'rank_3': 0
                }
            p_stats = all_server_stats[p_name]
            # add to total xp
            p_stats['xp_all'] += player['xp']
            # rank stuff
            rank = player['rank']
            if rank == 1:
                p_stats['rank_1'] += 1
                p_stats['rank_weight'] += 3
            if rank == 2:
                p_stats['rank_2'] += 1
                p_stats['rank_weight'] += 2
            if rank == 3:
                p_stats['rank_3'] += 1
                p_stats['rank_weight'] += 1
    except Exception as e:
        logger.exception(e)
Ejemplo n.º 6
0
 def quit(self):
     try:
         self.driver.quit()
         self.writer.write(self.writer.row, 7, 'PASS')
     except Exception as e:
         logger.exception(e)
         self.writer.write(self.writer.row, 8, str(traceback.format_exc()))
Ejemplo n.º 7
0
 def uploadfile(self, xpath, filepath):
     """
     根据xpath,找到元素
     使用send_keys上传文件
     :param xpath: 元素的xpath
     :param filepath: 需要上传文件的全路径
     :return: 无
     """
     try:
         ele = self.driver.find_element_by_xpath(xpath)
     except Exception as e:
         logger.exception(e)
         self.writer.write(self.writer.row, self.writer.clo, 'FAIL')
         self.writer.write(self.writer.row, self.writer.clo + 1,
                           str(traceback.format_exc()))
         # 定位失败,则直接返回
         return False
     try:
         ele.send_keys(filepath)
         self.writer.write(self.writer.row, self.writer.clo, 'PASS')
         self.writer.write(self.writer.row, self.writer.clo + 1, "上传成功")
         return True
     except Exception as e:
         logger.exception(e)
         self.writer.write(self.writer.row, self.writer.clo, 'FAIL')
         self.writer.write(self.writer.row, self.writer.clo + 1,
                           str(traceback.format_exc()))
         return False
Ejemplo n.º 8
0
 def shape_up(self, raw_data):
     """
     A method for preparing pandas self.dataset from raw JSON
     :param raw_data: A input JSON data from URL response.
     :return: Pandas self.dataset
     """
     try:
         dataset = self._dataset.from_dict(raw_data, orient='index')
         dataset.reset_index(level=0, inplace=True)
         dataset.rename(columns={
             'index': 'ip_address', 'first_seeen': 'first_seen', 'lat': 'latitude', 'long': 'longitude'
         }, inplace=True)
         dataset.drop_duplicates(subset='ip_address', keep='first', inplace=True)
         dataset['ip_address'] = dataset['ip_address'].astype('str')
         dataset['reliability'] = dataset['reliability'].astype('int')
         dataset['priority'] = dataset['priority'].astype('int')
         dataset['latitude'] = dataset['latitude'].astype('float')
         dataset['longitude'] = dataset['longitude'].astype('float')
         dataset['dest_port'] = dataset['dest_port'].astype('int')
         dataset['last_online'] = dataset['last_online'].astype('str')
         dataset['first_seen'] = dataset['first_seen'].astype('str')
         dataset['revision'] = 0
         return dataset
     except Exception as err:
         logger.exception(err)
Ejemplo n.º 9
0
 def assertequals(self, jpath, value):
     """
     断言json结果中某个键的值和value相等
     :param key: json结果的键
     :param value: 预期值
     :return: 无
     """
     value = self.__get_param(value)
     status = False
     if value == 'None':
         value = None
     res = str(self.result)  # 返回结果转为字符串
     # 尝试用jsonpath提取jpath表达式中获取到的值,如果失败,res = str(self.result)
     try:
         res = str(jsonpath.jsonpath(self.jsonres, jpath)[0])
     except Exception as e:
         res = None
         logger.exception(e)
         pass
     if res == value:
         logger.info('断言成功')
         status = True
         self.writer.write(self.writer.row, 7, 'PASS')
         self.writer.write(self.writer.row, 8, str(res))
     else:
         logger.info('断言失败')
         self.writer.write(self.writer.row, 7, 'FAIL')
         self.writer.write(self.writer.row, 8, '实际:' + str(res))
         if res == None:
             res = 'None'
         print("实际值:" + str(res))
     return status
Ejemplo n.º 10
0
    def get(self, url, params=None):
        """
        发送get请求
        :param url:
        :param params:  textSearch=96800
        :return:
        """
        self.status_code = ''  # 响应码置为空字符串,否则这时的响应码可能为上个请求的
        # 判断url格式
        if not (url.startswith('http') or url.startswith('https')):
            url = self.url + url + '?' + params
        else:
            url = url + '?' + params

        # 如果请求https请求,报ssl错误,就在下面添加verify=False参数
        res = self.session.get(url, verify=False)  # 发包
        self.status_code = res.status_code  # 响应码
        self.result = res.content.decode("utf8")
        print("get请求响应结果:%s" %
              self.result[0:200])  # 打印的内容会在BeautifulReport中可以看到
        try:
            jsons = self.result
            jsons = jsons[jsons.find('{'):jsons.rfind('}') +
                          1]  # 尝试处理非标准格式的json
            self.jsonresult = json.loads(jsons)
            self.writer.write(self.writer.row, 7, 'PASS')
            self.writer.write(self.writer.row, 8, str(self.jsonresult))
        except Exception as e:
            # 等于空,不然等于上一次请求保存的json结果
            self.jsonresult = {}
            logger.exception(e)
            self.writer.write(self.writer.row, 7, 'FAIL')
            self.writer.write(self.writer.row, 8, str(self.result))
Ejemplo n.º 11
0
 async def myaccounts(self, ctx):
     try:
         player_list = await db.get_member_entry(ctx.guild, ctx.author, 'players')
         await ctx.send(f"**{ctx.author.name}** - *{'*  **|**  *'.join(player_list)}*")
     except Exception as e:
         logger.exception(f'Error fetching all accounts: {e}')
         return await ctx.send(f'Error fetching all accounts!')
Ejemplo n.º 12
0
 def get_difference(self, response_df):
     """
     A method for getting changed cell values of existing records against database records
     :param response_df: A dataframe generated from response
     :return: None
     """
     ip_table = conf.read().get('db-conf', 'ip_table')
     try:
         table = pd.read_sql(
             "SELECT * FROM {};".format(ip_table), con=self.db.engine, chunksize=self.chunk_size
         )
         cols = [
             'ip_address', 'reliability', 'priority', 'activity', 'sub_category', 'country', 'city', 'latitude',
             'longitude', 'source', 'target', 'dest_port', 'last_online', 'first_seen', 'used_by', 'reference_link'
         ]
         df = response_df
         diff_df = []
         while True:
             chunk = next(table)
             exist_df = df[df['ip_address'].isin(chunk['ip_address'].values)]
             exist_df = exist_df.sort_values('ip_address').reset_index(drop=True)
             chunk_df = chunk[chunk['ip_address'].isin(exist_df['ip_address'].values)]
             chunk_df = chunk_df.sort_values('ip_address').reset_index(drop=True)
             chunk_df = chunk_df[cols]
             exist_df = exist_df[cols]
             diff = self.diff_df(exist_df, chunk_df, how='left')
             diff_df.append(diff)
             if len(chunk.index) < self.chunk_size:
                 break
         self._updated_df = pd.concat(diff_df)
         return self._updated_df
     except (StopIteration, TypeError, ValueError) as err:
         logger.exception(err, exc_info=False)
Ejemplo n.º 13
0
 def make_boss_update(self, old_data, new_data, title, kill_new, kill_old, kill_diff, action_1, action_2):
     logger.debug(f"assigning Boss: {title}...")
     # check for boss milestones
     found_milestone = False
     threshold = 500
     # loop thru intervals to see if a threshold has been passed
     increment = threshold
     while kill_new >= threshold:
         if kill_old < threshold:
             message = f"**{self.rs_name} has {action_1} {title} at least {util.format_int_str(threshold)} times**\
                         ```c\nTotal {action_2} count: {new_data['score']} | Current rank: {new_data['rank']}```"
             self.milestones.append(message)
             logger.debug(f"appended Boss update for {title} to milestones list...")
             found_milestone = True
             break
         else:
             threshold += increment
     # done with loop, check if posting regular update
     logger.debug("done checking loop...")
     if not found_milestone:
         # set correct tense of time  --not needed anymore, flipped total/new counts - 7/4/20
         # if kill_diff == 1: times = 'time'
         # else: times = 'times'
         logger.debug("found diff...")
         try:
             message = f"**{self.rs_name} has {action_1} {title} {new_data['score']} times**```c\nNew {action_2}s logged: {util.format_int_str(kill_diff)} | Current rank: {new_data['rank']}```"
         except Exception as e:
             logger.exception(f'Error posting boss update: {e}')
         logger.debug("made message...")
         self.minigames.append(message)
         logger.debug(f"appended update for {title} to minigames list...")
     logger.debug(f"done checking Bosses...")
Ejemplo n.º 14
0
 def hover(self, xpath):
     """
     根据xpath,找到元素,并将鼠标悬停到元素
     该关键字自动化过程中,如果认为移动了鼠标可能导致悬停失败
     该关键字也可以用于页面滚动,但不一定都能滚动成功
     :param xpath: 元素的xpath
     :return:
     """
     try:
         ele = self.driver.find_element_by_xpath(xpath)
     except Exception as e:
         logger.exception(e)
         self.writer.write(self.writer.row, self.writer.clo, 'FAIL')
         self.writer.write(self.writer.row, self.writer.clo + 1,
                           str(traceback.format_exc()))
         # 定位失败,则直接返回
         return False
     try:
         actions = ActionChains(self.driver)
         actions.move_to_element(ele).perform()
         self.writer.write(self.writer.row, self.writer.clo, 'PASS')
         self.writer.write(self.writer.row, self.writer.clo + 1, "悬停成功")
         return True
     except Exception as e:
         logger.exception(e)
         self.writer.write(self.writer.row, self.writer.clo, 'FAIL')
         self.writer.write(self.writer.row, self.writer.clo + 1,
                           str(traceback.format_exc()))
         # 定位失败,则直接返回
         return False
Ejemplo n.º 15
0
    def set_case(self, case):
        """
        设置用例, 把Excel某一行赋值过来
        :param case: list类型
        :return:如果有关联的字符串,将其返回,并重新写Excel
        """
        # openpyxl 的行和列从1开始,这里进行减1操作
        if not case[cell_config.get('path') - 1].startswith('http'):
            path = "/" + case[cell_config.get('path') - 1]
            self.path = self.url + path.replace("//", "/")
        else:
            self.path = case[cell_config.get('path') - 1]

        if case[cell_config.get('method') - 1] is not None:
            self.method = case[cell_config.get('method') - 1]

        if case[cell_config.get('params') - 1] is None or case[
                cell_config.get('params') - 1] == '' or case[
                    cell_config.get('params') -
                    1].lower() == 'none' or case[cell_config.get('params') -
                                                 1].lower() == 'null':
            self.params = None
        else:
            self.relation_params_temp = self._get_relations(
                case[cell_config.get('params') - 1])
            try:
                self.params = json.loads(self.relation_params_temp)
            except Exception as e:
                logger.exception(traceback.format_exc())
                self.params = None
Ejemplo n.º 16
0
 def put(self):
     try:
         self.response = self.session.put(url=self.path, json=self.params)
     except Exception as e:
         logger.exception(traceback.format_exc())
         self.response = None
     return self.response
Ejemplo n.º 17
0
def call_back_toservice(task, query):
    logger.debug('[callback a verifytask by rabbitmq]')
    try:
        credentials = pika.PlainCredentials(username=task.master_info['spider_mq_user']
                                            , password=task.master_info['spider_mq_passwd'])
        connection = pika.BlockingConnection(
            pika.ConnectionParameters(
                host=task.master_info['spider_mq_host'], virtual_host=task.master_info['spider_mq_vhost'], credentials=credentials
            )
        )
        channel = connection.channel()

        msg = json.dumps({
            'qid': task.req_qid, 'type': task.callback_type,
            'uid': task.req_uid, 'query': json.dumps(query)
        })

        res = channel.basic_publish(
            exchange=task.master_info['spider_mq_exchange'],
            routing_key=task.master_info['spider_mq_routerKey'],
            properties=pika.BasicProperties(delivery_mode=2),
            body=msg,
        )
        connection.close()
        if not res:
            raise Exception('RabbitMQ Result False')
        logger.debug('[callback a verifytask done]')
    except Exception as exc:
        logger.exception("callback a task fail. error = {0}".format(traceback.format_exc()))
Ejemplo n.º 18
0
async def message_server(Server, serv_dict, message, mention):
    """ Needs dict:\n
    {
        "id": [guild.id],
        "channel": [channel.id] or None,
        "role": [role.id] or None
    }
    """
    try:
        # If not channel in this server then skip server
        if serv_dict["channel"]:
            rs_chan = Server.get_channel(serv_dict["channel"])
            # Get mention role, if not then use @here, empty if not mentioning
            rs_role_men = ''
            if mention:
                if serv_dict["role"]:
                    rs_role = Server.get_role(serv_dict["role"])
                    rs_role_men = rs_role.mention  # CHANGE FOR TESTING
                else:
                    rs_role_men = "@here"
            # Send message!
            await rs_chan.send(f'{message}\n{rs_role_men}')
            logger.info(
                f"Sent message in guild id: {serv_dict['id']} | name: {Server.name} | channel: {rs_chan.name} | Mention: {mention}"
            )
        else:
            logger.info(
                f"Could not send message in guild id: {serv_dict['id']} -- No channel specified"
            )
    except Exception as e:
        logger.exception(
            f"Could not send message in guild id: {serv_dict['id']} -- {e}")
Ejemplo n.º 19
0
 def __find_element(self, xpath):
     try:
         element = WebDriverWait(
             self.driver, 10,
             0.5).until(lambda x: x.find_element(By.XPATH, xpath))
         return element
     except Exception as e:
         logger.exception(str(traceback.format_exc()))
Ejemplo n.º 20
0
 def delete(self):
     try:
         self.response = self.session.delete(url=self.path,
                                             params=self.params)
     except Exception as e:
         logger.exception(traceback.format_exc())
         self.response = None
     return self.response
Ejemplo n.º 21
0
 def sleep(self, t=3):
     try:
         time.sleep(int(float(t)))
         self.writer.write(self.writer.row, 7, 'PASS')
     except Exception as e:
         logger.exception(e)
         self.writer.write(self.writer.row, 7, 'FAIL')
         self.writer.write(self.writer.row, 8, e)
Ejemplo n.º 22
0
 def switchToParentFrame(self):
     try:
         self.driver.switch_to.default_content()
         self.writer.write(self.writer.row, self.writer.clo, "PASS")
         logger.info("回到最外层iframe成功")
     except Exception as e:
         self.writer.write(self.writer.row, self.writer.clo, "FAIL")
         self.writer.write(self.writer.row, self.writer.clo + 1, str(e))
         logger.exception(e)
Ejemplo n.º 23
0
 def openUrl(self, url):
     try:
         self.driver.get(url)
         self.writer.write(self.writer.row, self.writer.clo, "PASS")
         logger.info("打开指定url:" + url + "成功")
     except Exception as e:
         self.writer.write(self.writer.row, self.writer.clo, "FAIL")
         self.writer.write(self.writer.row, self.writer.clo + 1, str(e))
         logger.exception(e)
Ejemplo n.º 24
0
 def closePage(self):
     try:
         self.driver.close()
         self.writer.write(self.writer.row, self.writer.clo, "PASS")
         logger.info("关闭当前页面成功")
     except Exception as e:
         self.writer.write(self.writer.row, self.writer.clo, "FAIL")
         self.writer.write(self.writer.row, self.writer.clo + 1, str(e))
         logger.exception(e)
Ejemplo n.º 25
0
 def flush_db():
     """
     A method to truncate blocked_ips table
     """
     try:
         BlockedIPsModel.query.delete()
         db.session.commit()
     except Exception as err:
         logger.exception(err)
Ejemplo n.º 26
0
 def closeBrowsers(self):
     try:
         self.driver.quit()
         self.writer.write(self.writer.row, self.writer.clo, "PASS")
         logger.info("关闭浏览器成功")
     except Exception as e:
         self.writer.write(self.writer.row, self.writer.clo, "FAIL")
         self.writer.write(self.writer.row, self.writer.clo + 1, str(e))
         logger.exception(e)
Ejemplo n.º 27
0
 def click(self, xpath):
     try:
         self.driver.find_element_by_xpath(xpath).click()
         self.writer.write(self.writer.row, self.writer.clo, "PASS")
         self.writer.write(self.writer.row, self.writer.clo + 1, "点击成功")
     except Exception as e:
         logger.exception(e)
         self.writer.write(self.writer.row, self.writer.clo, "FAIL")
         self.writer.write(self.writer.row, self.writer.clo + 1, str(e))
Ejemplo n.º 28
0
 def input(self, xpath, text):
     try:
         ele = self.__find_element(xpath)
         ele.send_keys(text)
         self.writer.write(self.writer.row, self.writer.clo + 1, "输入成功")
     except Exception as e:
         logger.exception(e)
         self.writer.write(self.writer.row, self.writer.clo, "FAIL")
         self.writer.write(self.writer.row, self.writer.clo + 1, str(e))
Ejemplo n.º 29
0
 def outiframe(self, xpath):
     try:
         self.driver.switch_to().default_content()
         self.writer.write(self.writer.row, self.writer.clo, "PASS")
         self.writer.write(self.writer.row, self.writer.clo + 1, "输入成功")
     except Exception as e:
         logger.exception(e)
         self.writer.write(self.writer.row, self.writer.clo, "FAIL")
         self.writer.write(self.writer.row, self.writer.clo + 1, str(e))
Ejemplo n.º 30
0
 def input(self, xpath, text):
     try:
         self.driver.find_element_by_xpath(xpath).send_keys(text)
         self.writer.write(self.writer.row, self.writer.clo, "PASS")
         self.writer.write(self.writer.row, self.writer.clo + 1, "输入成功")
     except Exception as e:
         logger.exception(e)
         self.writer.write(self.writer.row, self.writer.clo, "FAIL")
         self.writer.write(self.writer.row, self.writer.clo + 1, str(e))