记录一些免费的实用API

IP检查: http://ip-api.com/json http://icanhazip.com/   https://ifconfig.co/json  (有CF) https://api6.ipify.org/?format=json 英国邮编: https://api.postcodes.io/ SSL在线检查 测试浏览器 https://clienttest.ssllabs.com:8443/ssltest/viewMyClient.html 测试网站 https://www.ssllabs.com/ssltest/analyze.html?d=houyunbo.com 开源社区–一些好用的插件工具 https://mybrowseraddon.com/

Python Selenium提供的execute_script调用js的一些操作

调用js方法 execute_script(script, *args) 在当前窗口/框架 同步执行javaScript 脚本:JavaScript的执行。 *参数:适用任何JavaScript脚本。 使用: driver.execute_script(’document.title’) 滚动到目标视图 target = driver.find_element_by_xxxx() driver.execute_script("arguments[0].scrollIntoView();", target) 通过执行JavaScript中的代码删除target JS code document.getElementsByClassName("site-nav-right fr")[0].childNodes[1].removeAttribute("target") python js=’arguments[0].removeAttribute(argument[1])’ driver.execute_script(js,login_link,”target”)

MYSQL数据库的一些常用操作

mysql查询重复数据(把有重复的给列出来) SELECT * FROM `it_info` GROUP BY `last_name` HAVING COUNT(*)>1 使用replace批量更新SQL某个字段的某个字符,比如批量替换last_name里包含的’位空 update `user` set `last_name`=REPLACE(`last_name`,"’","") WHERE `last_name` LIKE "%’%" 批量更新数据库数组,在长度小于5的数据前面加0 update `address` set `zip`=concat(’0′,`zip`) WHERE length(`zip`) < 5 Think PHP 查询数据库某一个字段的唯一值  Db::table(’user’)->distinct(true)->field(’class’)->select(); 这将仅取出 class 唯一值的列表 Db::table(’user’)->group(’class’)->order(’name desc’)->select(); 这将取出class唯一的每一条记录,组成列表 随机取同一个字段里面,不同分组的一条记录  Db::table(’user’) ->where(’status’,1) ->orderRand() ->buildSql(); 先构建一个子查询,把所有值随机排序  Db::table($subQuery . ‘ a’) ->group(’class’) ->orderRand() ->select(); 然后再把子查询的值分组

python调用函数超时设置

1、Windows中sign报错,Linux能很好的使用: https://pypi.python.org/pypi/timeout-decorator import time import timeout_decorator @timeout_decorator.timeout(5) def mytest():     print("Start")     for i in range(1,10):         time.sleep(1)         print("{} seconds have passed".format(i)) if __name__ == ‘__main__’:     mytest() 2、Windows可以使用,Linux报错不能导入包 https://pypi.python.org/pypi/func_timeout from func_timeout import func_set_timeout, FunctionTimedOut @func_set_timeout(2.5) def mytest2():     print("Start")     for i… Read More »

Selenium:利用select模块处理下拉框

在利用selenium进行UI自动化测试过程中,经常会遇到下拉框选项,这篇博客,就介绍下如何利用selenium的Select模块来对标准select下拉框进行操作。。。 首先导入Select模块: # coding=utf-8 from selenium import webdriver from selenium.webdriver.support.select import Select 1、Select提供了三种选择某一项的方法 select_by_index          # 通过索引定位 select_by_value          # 通过value值定位 select_by_visible_text   # 通过文本值定位 注意事项: index索引是从“0”开始; value是option标签的一个属性值,并不是显示在下拉框中的值; visible_text是在option标签中间的值,是显示在下拉框的值; 2、Select提供了三种返回options信息的方法 options                  # 返回select元素所有的options all_selected_options     # 返回select元素中所有已选中的选项 first_selected_options   #… Read More »

python3+selenium3.13的简单操作

1.浏览器 1.1 浏览器窗口大小位置  driver.set_window_size(self, width, height, windowHandle) 将某个窗口设置为固定大小  driver.set_window_position(self, x, y, windowHandle) 将某个窗口移动到指定的位置  driver.set_window_rect(self, x, y, width, height, windowHandle) 将某个窗口设置为固定的大小移动到指定的位置  driver.maximize_window() 窗口最大化 driver.minimize_window() 窗口最小化 from selenium import webdriver driver = webdriver.Firefox() driver.get("http://www.baidu.com") driver.set_window_size(480, 800) driver.set_window_rect(300, 300, 480, 800) driver.set_window_position(300, 300) driver.maximize_window() driver.minimize_window() 1.2 控制浏览器的后退、前进 driver.back() driver.forward() from selenium import webdriver import time driver = webdriver.Firefox()… Read More »

GTM UTC 时区列表

Time zone list Africa Africa/Abidjan (GMT) GMT +00:00 Africa/Accra (GMT) GMT +00:00 Africa/Addis Ababa (EAT) GMT +03:00 Africa/Algiers (CET) GMT +01:00 Africa/Asmara (EAT) GMT +03:00 Africa/Bamako (GMT) GMT +00:00 Africa/Bangui (WAT) GMT +01:00 Africa/Banjul (GMT) GMT +00:00 Africa/Bissau (GMT) GMT +00:00 Africa/Blantyre (CAT) GMT +02:00 Africa/Brazzaville (WAT) GMT +01:00 Africa/Bujumbura (CAT) GMT +02:00 Africa/Cairo (EET)… Read More »

Python 安装包超时,更改国内源

解决方法: 1、添加超时的参数,不使用缓存 pip install –default-timeout=1000 –no-cache-dir 2、使用国内源: 例如: pip install jupyter -i http://pypi.douban.com/simple –trusted-host pypi.douban.com 阿里云 http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 豆瓣(douban) http://pypi.douban.com/simple/ 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/ 中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/

如何正确移除Selenium中的 window.navigator.webdriver

Chrome 79.0.3945.36+ from selenium import webdriver options = webdriver.ChromeOptions() options.add_experimental_option("excludeSwitches", ["enable-automation"]) options.add_experimental_option(’useAutomationExtension’, False) driver = webdriver.Chrome(options=options, executable_path=’./chromedriver’) driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", { "source": """ Object.defineProperty(navigator, ‘webdriver’, { get: () = undefined }) """ }) driver.get(’http://google.com’) Chrome 旧版本 from selenium.webdriver import Chrome from selenium.webdriver import ChromeOptions option = ChromeOptions() option.add_experimental_option(’excludeSwitches’,[’enable-automation’]) driver =Chrome(options=option)

js replace 全局替换的操作方法

js 的replace 默认替换只替换第一个匹配的字符,如果字符串有超过两个以上的对应字符就无法进行替换,这时候就要进行一点操作,进行全部替换。 <script language="javascript"> var strM = "这是要被替换的字符串啊啊!"; //在此我想将字母a替换成字母A alert(strM.replace("啊","额")); </script> 上面这段代码,只能替换第一个字符“啊”,第二个“啊”就无法替换,这样就没办法满足大多数使用js(replace)的需求 <script type="text/javascript" language="javascript"> var s = "这是要被替换的字符换啊啊!"; alert(s); alert(s.replace(/啊/g, "额")); 这样,就可以实现整个字符串的替换。 我们这里用到了正则函数的/g全部的使用。这样就可以实现整个字符串的替换效果。 下面,我们大家可能还有个需求无法满足,那就是,我们替换定值可以使用这个,但是替换变量怎么使用? 接下来,就说一下替换变量的使用方式。 简单介绍一下eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。接下来主要靠这个函数。 <script> var ch = "变量"; var reg = "/"+ch+"/g"; var str = "这是一个变量,这是一个变量"; var val = str.replace(eval(reg),"替换"); alert(val); </script> 但是如果要替换的字符串中含有/符号时,上面的就不能用了,需要采取以下方法 <script> var ch =… Read More »