Category Archives: Python学习

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 »

如何正确移除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)

python在文本开头插入一行

问题 对于一个文本文件,需要在起开头插入一行,其他内容不变 解决方法 with open(’article.txt’, ‘r+’) as f:     content = f.read()     f.seek(0, 0)     f.write(’writer:Fatsheep\n’+content) 其中字符串’writer:Fatsheep\n’中为要插入的内容。 注意 f.seek(0, 0)不可或缺,file.seek(off, whence=0)在文件中移动文件指针, 从 whence ( 0 代表文件其始, 1 代 表当前位置, 2 代表文件末尾)偏移 off 字节

Python–列表如何去掉最后一个元素

在Python3中列表数据类型的内置方法里有三种方法可以删除列表的最后一个元素: <h3>1、pop方法</h3> list = [1,2,3,4] list.pop() print(list) #[1, 2, 3] 2、del方法 list = [1,2,3,4] del(list[-1]) print(list) # [1, 2, 3] 3、切片 list = [1,2,3,4] list = list[0:-1] print(list) # [1,2,3] 总结: 以上三种方法未在内存处理上进行测试,唯一区别,pop方法和del方法如果对空列表进行操作,会报错中断执行,切片方法不会因此报错,继续保持空列表向下运行

Python实现自动定义变量和赋值

今天遇到一个问题,需要实现一个JS加密代码转位Python <script type="text/javascript">q7z6=3876;k1g7=7882;p6k1=6688;l2l2=1166;t0r8=4339;n4u1=6898;z6t0=6582;r8i9=3406;m3n4=4100;s9c3=5023;z6k1m3=0^q7z6;s9g7z6=1^k1g7;p6d4t0=2^p6k1;u1y5a1=3^l2l2;k1x4h8=4^t0r8;y5j0o5=5^n4u1;j0q7q7=6^z6t0;w3l2k1=7^r8i9;g7a1e5=8^m3n4;b2o5w3=9^s9c3;</script> 先获取到JS定义的内容 html = ‘q7z6=3876;k1g7=7882;p6k1=6688;l2l2=1166;t0r8=4339;n4u1=6898;z6t0=6582;r8i9=3406;m3n4=4100;s9c3=5023;z6k1m3=0^q7z6;s9g7z6=1^k1g7;p6d4t0=2^p6k1;u1y5a1=3^l2l2;k1x4h8=4^t0r8;y5j0o5=5^n4u1;j0q7q7=6^z6t0;w3l2k1=7^r8i9;g7a1e5=8^m3n4;b2o5w3=9^s9c3;’ 然后转为列表,并去掉最后一个空元素, html = html.split(";") html.pop() 然后循环取值赋值 exec(‘{} = {}’.format(kv[0],kv[1])) 实现自动定义变量和赋值 for i in html:       kv = i.split("=")     exec('{} = {}’.format(kv[0],kv[1]))     print(kv[0])

Python正则findall函数捕获分组的问题

Python下 findall()函数在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。 但是如果正则表达式里面有()分组的话,它默认是要返回所有的满足条件的分组,返回元组格式 例如 html = ”’103.216.82.199:6667 174.70.241.7:24385”’ pattern = re.compile(r'(([0-9]{1,3}\.){3}([0-9]{1,3}):[0-9]{1,5})’) proxies = pattern.findall(html) //   [(‘103.216.82.199:6667′, ’82.’, ‘199’), (‘174.70.241.7:24385’, ‘241.’, ‘7’)] 返回的就是包含子组的元组,然后组成列表, 可使用 proxies = [match[0] for match in pattern.findall(html)] //  [‘103.216.82.199:6667’, ‘174.70.241.7:24385’] 获取对应的子组内容 如果需要取消捕获分组的话,对应子组括号加上?: pattern = re.compile(r'(?:(?:[0-9]{1,3}\.){3}(?:[0-9]{1,3}):[0-9]{1,5})’) proxies = pattern.findall(html) //  [‘103.216.82.199:6667’, ‘174.70.241.7:24385’] 结果则返回正则匹配的所有内容

Python 判断字符串开头和

Python判断字符串是否以某个字符开头: 判断字符串site = ‘https://www.houyunbo.com’是否以http开头 site.startswith(‘http’)                      //True startswith 多个参数放入元组,满足其中一个就是True    site.startswith((‘ftp’,’http’))      //True site[:4] ==’http’                              //True   Python判断字符串是否以某个字符结尾 判断字符串site = ‘https://www.houyunbo.com’是否以 .jpg结尾 site.endswith(‘.jpg’)                //True… Read More »

Python常用模块

Flask  Web微内核中文文档: https://dormousehole.readthedocs.io/en/latest/ Jinja文档 http://jinja.pocoo.org/docs Requests 网络请求模块 https://requests.readthedocs.io/zh_CN/latest/index.html Beautiful Soup 4.4.0  数据提取 https://beautifulsoup.readthedocs.io/zh_CN/latest/ Selenium 浏览器测试 http://www.selenium.org.cn/    https://www.selenium.dev/