本文介绍: 公司每天要做工作汇报,汇报使用的网页版, 所以又想起这个老朋友了。再次上手,发现很多接口都变了, 怎么说呢, 应该是易用性更强了, 不过还是得重新看看, 我这里是python3。pip安装得现在最新(20231128)版本(4.15.2), 下面做下操作记录。引入模块等待页面打开新版本的定位器不一样了, 我写了个定位发送内容得功能。定位器的基本用法PS: 写这类工具,如果不急, 一定要多加延时控制,有一定的反“反爬机制”, 也对服务器有好一点,大家好。
公司每天要做工作汇报,汇报使用的网页版, 所以又想起 selenium 这个老朋友了。
再次上手,发现很多接口都变了, 怎么说呢, 应该是易用性更强了, 不过还是得重新看看, 我这里是python3。
pip安装得现在最新(20231128)版本(4.15.2), 下面做下操作记录。
引入模块
# selenium 导入
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
options =Options()
# 为了防止频繁启动终端,可以端口远程一个的方案
# /opt/google/chrome/chrome --remote-debugging-port=9527
crom_url = '127.0.0.1:9527'
options.add_experimental_option("debuggerAddress", crom_url)
epth = './3ds/chromedriver_linux64/chromedriver'
# 这里不太一样, 加了个ChromeService抽象层, 我认为更加合理
service = webdriver.ChromeService(executable_path=epth)
driver = webdriver.Chrome(service=service, options=options)
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 运行 ipynb
- seleniumhq.github.io
原文地址:https://blog.csdn.net/u012939880/article/details/134660159
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_27922.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。