公司每天要做工作汇报,汇报使用的网页版, 所以又想起 selenium 这个老朋友了。
再次上手,发现很多接口都变了, 怎么说呢, 应该是易用性更强了, 不过还是得重新看看, 我这里是python3。
pip安装得现在最新(20231128)版本(4.15.2), 下面做下操作记录。
引入模块
等待页面打开
while True: driver.get("网址") try: WebDriverWait(driver, 60, 0.5).until(EC.presence_of_element_located([By.ID,"workBox"])) break except: continue新版本的定位器不一样了, 我写了个定位发送内容得功能。
def send_tkey(loc:list, ctx, clear=True): time.sleep(random.random()) obj = None if isinstance(loc[0], list): for l in loc: if len(l) == 2: l.append(0) if obj is None: obj = driver.find_elements(*l[:2])[l[2]] else: obj = obj.find_elements(*l[:2])[l[2]] else: if len(loc) == 2: loc.append(0) obj = driver.find_elements(*loc[:2])[loc[2]] if clear: obj.clear() time.sleep(random.random()) for e in ctx: if isinstance(e, list): obj.send_keys(*e) else: obj.send_keys(e) time.sleep(random.random())使用方法:
# 前面是定位器参数, 输入内容 send_tkey([[By.CLASS_NAME,'class1'],[By.TAG_NAME,'input']],'工作内容!',False)定位器的基本用法
driver.find_elements(By.CLASS_NAME,'class1')[0].find_element(By.TAG_NAME,'input').send_keys(Keys.ENTER) driver.find_elements(By.CLASS_NAME,'class1')[0].find_element(By.TAG_NAME,'input').click()PS: 写这类工具,如果不急, 一定要多加延时控制,有一定的反“反爬机制”, 也对服务器有好一点,大家好。
参考(项目做了一段时间,可能没有列完, 感谢大家的分享) Selenium switch_to 方法Selenium 中操作 iframe,别再说你不会了selenium 定位元素(包括父子,兄弟)及常见操作getElementsByName 方法、getElementsByTagName 方法、document 对象三个查询方法的使用注意事项、dom 对象查询练习、document 对象补充说明ubuntu 系统提示ipython 运行 ipython 运行 ipynbseleniumhq.github.io